X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fxournal.h;h=6e75f2b9fae06b240163570a3fa531ae92aaa18c;hb=64fbee630efe4a6a731bcc7b68855d933946b050;hp=0b94190f73ca5f3adc38ff1c5961938703d3518f;hpb=54f21a9c94e25999b4f8f350104e4a3801ac8a4f;p=xournal.git diff --git a/src/xournal.h b/src/xournal.h index 0b94190..6e75f2b 100644 --- a/src/xournal.h +++ b/src/xournal.h @@ -1,15 +1,24 @@ #include #include +// PREF FILES INFO + +#define CONFIG_DIR ".xournal" +#define MRU_FILE "recent-files" +#define MRU_SIZE 8 +#define CONFIG_FILE "config" + // DATA STRUCTURES AND CONSTANTS #define PIXEL_MOTION_THRESHOLD 0.3 #define MAX_AXES 12 #define EPSILON 1E-7 -#define MAX_ZOOM 20 -#define DEFAULT_ZOOM 1.3333333333 +#define MAX_ZOOM 20.0 +#define DISPLAY_DPI_DEFAULT 96.0 #define MIN_ZOOM 0.2 +#define VBOX_MAIN_NITEMS 5 // number of interface items in vboxMain + /* a string (+ aux data) that maintains a refcount */ typedef struct Refstring { @@ -91,7 +100,10 @@ extern guint predef_bgcolors_rgba[COLOR_MAX]; #define TOOL_SELECTREGION 4 #define TOOL_SELECTRECT 5 #define TOOL_VERTSPACE 6 +#define TOOL_HAND 7 #define NUM_STROKE_TOOLS 3 +#define NUM_TOOLS 8 +#define NUM_BUTTONS 3 #define TOOLOPT_ERASER_STANDARD 0 #define TOOLOPT_ERASER_WHITEOUT 1 @@ -133,6 +145,9 @@ typedef struct Item { #define ITEM_NEW_DEFAULT_BG 11 #define ITEM_NEW_PAGE 13 #define ITEM_DELETE_PAGE 14 +#define ITEM_REPAINTSEL 15 +#define ITEM_MOVESEL_VERT 16 +#define ITEM_HAND 17 typedef struct Layer { GList *items; // the items on the layer, from bottom to top @@ -156,47 +171,74 @@ typedef struct Journal { } Journal; typedef struct Selection { - int type; + int type; // ITEM_SELECTRECT, ITEM_MOVESEL_VERT BBox bbox; // the rectangle bbox of the selection struct Layer *layer; // the layer on which the selection lives double anchor_x, anchor_y, last_x, last_y; // for selection motion GnomeCanvasItem *canvas_item; // if the selection box is on screen GList *items; // the selected items (a list of struct Item) + int move_pageno, orig_pageno; // if selection moves to a different page + struct Layer *move_layer; + float move_pagedelta; } Selection; typedef struct UIData { int pageno, layerno; // the current page and layer struct Page *cur_page; struct Layer *cur_layer; - int toolno; // the number of the currently selected tool gboolean saved; // is file saved ? struct Brush *cur_brush; // the brush in use (one of brushes[...]) - struct Brush brushes[NUM_STROKE_TOOLS]; // the current pen, eraser, hiliter + int toolno[NUM_BUTTONS+1]; // the number of the currently selected tool + struct Brush brushes[NUM_BUTTONS+1][NUM_STROKE_TOOLS]; // the current pen, eraser, hiliter struct Brush default_brushes[NUM_STROKE_TOOLS]; // the default ones - gboolean ruler; // whether we're in ruler mode + gboolean ruler[NUM_BUTTONS+1]; // whether each button is in ruler mode + int linked_brush[NUM_BUTTONS+1]; // whether brushes are linked across buttons + int cur_mapping; // the current button number for mappings + gboolean use_erasertip; + int which_mouse_button; // the mouse button drawing the current path struct Page default_page; // the model for the default page int layerbox_length; // the number of entries registered in the layers combo-box struct Item *cur_item; // the item being drawn, or NULL int cur_item_type; GnomeCanvasPoints cur_path; // the path being drawn int cur_path_storage_alloc; - int which_mouse_button; // the mouse button drawing the current path - int saved_toolno; // while using an eraser device - gboolean saved_ruler; double zoom; // zoom factor, in pixels per pt gboolean use_xinput; // use input devices instead of core pointer gboolean allow_xinput; // allow use of xinput ? + gboolean discard_corepointer; // discard core pointer events in XInput mode + gboolean is_corestroke; // this stroke is painted with core pointer int screen_width, screen_height; // initial screen size, for XInput events + double hand_refpt[2]; char *filename; - gboolean view_continuous, fullscreen; + gchar *default_path; // default path for new notes + gboolean view_continuous, fullscreen, maximize_at_start; gboolean in_update_page_stuff; // semaphore to avoid scrollbar retroaction struct Selection *selection; GdkCursor *cursor; - gboolean emulate_eraser; gboolean antialias_bg; // bilinear interpolation on bg pixmaps gboolean progressive_bg; // rescale bg's one at a time + char *mrufile, *configfile; // file names for MRU & config + char *mru[MRU_SIZE]; // MRU data + GtkWidget *mrumenu[MRU_SIZE]; + gboolean bg_apply_all_pages; + int window_default_width, window_default_height, scrollbar_step_increment; + gboolean print_ruling; // print the paper ruling ? + int default_unit; // the default unit for paper sizes + int startuptool; // the default tool at startup + gboolean startupruler; + int zoom_step_increment; // the increment in the zoom dialog box + double zoom_step_factor; // the multiplicative factor in zoom in/out + double startup_zoom; +#if GLIB_CHECK_VERSION(2,6,0) + GKeyFile *config_data; +#endif + int vertical_order[2][VBOX_MAIN_NITEMS]; // the order of interface components } UIData; +#define BRUSH_LINKED 0 +#define BRUSH_COPIED 1 +#define BRUSH_STATIC 2 + typedef struct UndoErasureData { struct Item *item; // the item that got erased int npos; // its position in its layer @@ -207,11 +249,12 @@ typedef struct UndoErasureData { typedef struct UndoItem { int type; struct Item *item; // for ITEM_STROKE - struct Layer *layer; // for ITEM_STROKE, ITEM_ERASURE, ITEM_PASTE, ITEM_NEW_LAYER, ITEM_DELETE_LAYER - struct Layer *layer2; // for ITEM_DELETE_LAYER with val=-1 + struct Layer *layer; // for ITEM_STROKE, ITEM_ERASURE, ITEM_PASTE, ITEM_NEW_LAYER, ITEM_DELETE_LAYER, ITEM_MOVESEL + struct Layer *layer2; // for ITEM_DELETE_LAYER with val=-1, ITEM_MOVESEL struct Page *page; // for ITEM_NEW_BG_ONE/RESIZE, ITEM_NEW_PAGE, ITEM_NEW_LAYER, ITEM_DELETE_LAYER, ITEM_DELETE_PAGE GList *erasurelist; // for ITEM_ERASURE - GList *itemlist; // for ITEM_MOVESEL, ITEM_PASTE + GList *itemlist; // for ITEM_MOVESEL, ITEM_PASTE, ITEM_REPAINTSEL + GList *auxlist; // for ITEM_REPAINTSEL (brushes), ITEM_MOVESEL (depths) struct Background *bg; // for ITEM_NEW_BG_ONE/RESIZE, ITEM_NEW_DEFAULT_BG int val; // for ITEM_NEW_PAGE, ITEM_NEW_LAYER, ITEM_DELETE_LAYER, ITEM_DELETE_PAGE double val_x, val_y; // for ITEM_MOVESEL, ITEM_NEW_BG_RESIZE, ITEM_PAPER_RESIZE, ITEM_NEW_DEFAULT_BG @@ -277,3 +320,10 @@ extern struct Journal journal; extern struct UIData ui; extern struct BgPdf bgpdf; extern struct UndoItem *undo, *redo; + +extern double DEFAULT_ZOOM; + +#define UNIT_CM 0 +#define UNIT_IN 1 +#define UNIT_PX 2 +#define UNIT_PT 3