mirror of https://github.com/Gnucash/gnucash
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.0 KiB
100 lines
3.0 KiB
#ifndef GNUMERIC_STYLE_BORDER_H
|
|
#define GNUMERIC_STYLE_BORDER_H
|
|
|
|
#include "gnumeric.h"
|
|
#include <gdk/gdkgc.h>
|
|
#include <libgnomeprint/gnome-print.h>
|
|
|
|
typedef enum {
|
|
STYLE_BORDER_HORIZONTAL,
|
|
STYLE_BORDER_VERTICAL,
|
|
STYLE_BORDER_DIAGONAL
|
|
} StyleBorderOrientation;
|
|
|
|
typedef enum {
|
|
STYLE_BORDER_NONE = 0x0,
|
|
STYLE_BORDER_THIN = 0x1,
|
|
STYLE_BORDER_MEDIUM = 0x2,
|
|
STYLE_BORDER_DASHED = 0x3,
|
|
STYLE_BORDER_DOTTED = 0x4,
|
|
STYLE_BORDER_THICK = 0x5,
|
|
STYLE_BORDER_DOUBLE = 0x6,
|
|
STYLE_BORDER_HAIR = 0x7,
|
|
STYLE_BORDER_MEDIUM_DASH = 0x8,
|
|
STYLE_BORDER_DASH_DOT = 0x9,
|
|
STYLE_BORDER_MEDIUM_DASH_DOT = 0xa,
|
|
STYLE_BORDER_DASH_DOT_DOT = 0xb,
|
|
STYLE_BORDER_MEDIUM_DASH_DOT_DOT = 0xc,
|
|
STYLE_BORDER_SLANTED_DASH_DOT = 0xd,
|
|
|
|
/* ONLY for internal use */
|
|
STYLE_BORDER_INCONSISTENT = 0xe,
|
|
|
|
STYLE_BORDER_MAX
|
|
} StyleBorderType;
|
|
|
|
/* The order corresponds to the border_buttons name list
|
|
* in dialog_cell_format_impl */
|
|
typedef enum _StyleBorderLocation {
|
|
STYLE_BORDER_TOP, STYLE_BORDER_BOTTOM,
|
|
STYLE_BORDER_LEFT, STYLE_BORDER_RIGHT,
|
|
STYLE_BORDER_REV_DIAG, STYLE_BORDER_DIAG,
|
|
|
|
/* These are special.
|
|
* They are logical rather than actual borders, however, they
|
|
* require extra lines to be drawn so they need to be here.
|
|
*/
|
|
STYLE_BORDER_HORIZ, STYLE_BORDER_VERT,
|
|
|
|
STYLE_BORDER_EDGE_MAX
|
|
} StyleBorderLocation;
|
|
|
|
struct _GnmBorder {
|
|
/* Key elements */
|
|
StyleBorderType line_type;
|
|
GnmColor *color;
|
|
int begin_margin, end_margin, width;
|
|
|
|
/* Private */
|
|
GdkGC *gc;
|
|
GdkScreen *gc_screen;
|
|
gint ref_count;
|
|
};
|
|
|
|
void style_border_unref (GnmBorder *border);
|
|
GnmBorder *style_border_ref (GnmBorder *border);
|
|
|
|
#define style_border_is_blank(b) ((b) == NULL || (b)->line_type == STYLE_BORDER_NONE)
|
|
GnmBorder *style_border_none (void);
|
|
void style_border_none_set_color (GnmColor *color);
|
|
|
|
GnmBorder *style_border_fetch (StyleBorderType const line_type,
|
|
GnmColor *color,
|
|
StyleBorderOrientation orientation);
|
|
gboolean style_border_visible_in_blank (GnmBorder const *border);
|
|
|
|
StyleBorderOrientation style_border_get_orientation (StyleBorderLocation type);
|
|
|
|
gint style_border_get_width (StyleBorderType const line_type);
|
|
void style_border_set_gc_dash (GdkGC *gc, StyleBorderType const line_type);
|
|
|
|
void style_borders_row_draw (GnmBorder const * const * prev_vert,
|
|
GnmRow const *sr,
|
|
GdkDrawable *drawable,
|
|
int x, int y1, int y2,
|
|
int *colwidths, gboolean draw_vertical);
|
|
void style_border_draw_diag (GnmStyle const *style,
|
|
GdkDrawable *drawable,
|
|
int x1, int y1, int x2, int y2);
|
|
|
|
void style_borders_row_print (GnmBorder const * const * prev_vert,
|
|
GnmRow const *sr,
|
|
GnomePrintContext *context,
|
|
float x, float y1, float y2,
|
|
Sheet const *sheet, gboolean draw_vertical);
|
|
void style_border_print_diag (GnmStyle const *style,
|
|
GnomePrintContext *context,
|
|
float x1, float y1, float x2, float y2);
|
|
|
|
#endif /* GNUMERIC_STYLE_BORDER_H */
|