|
Packit |
5e0819 |
/*
|
|
Packit |
5e0819 |
* Copyright (C) 2001 Havoc Pennington
|
|
Packit |
5e0819 |
* Copyright (C) 2016 Alberts Muktupāvels
|
|
Packit |
5e0819 |
*
|
|
Packit |
5e0819 |
* This program is free software: you can redistribute it and/or modify
|
|
Packit |
5e0819 |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
5e0819 |
* the Free Software Foundation, either version 2 of the License, or
|
|
Packit |
5e0819 |
* (at your option) any later version.
|
|
Packit |
5e0819 |
*
|
|
Packit |
5e0819 |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
5e0819 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
5e0819 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
5e0819 |
* GNU General Public License for more details.
|
|
Packit |
5e0819 |
*
|
|
Packit |
5e0819 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
5e0819 |
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
5e0819 |
*/
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
#ifndef META_DRAW_OP_PRIVATE_H
|
|
Packit |
5e0819 |
#define META_DRAW_OP_PRIVATE_H
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
#include <gtk/gtk.h>
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
#include "meta-color-spec-private.h"
|
|
Packit |
5e0819 |
#include "meta-draw-spec-private.h"
|
|
Packit |
5e0819 |
#include "meta-gradient-spec-private.h"
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_BEGIN_DECLS
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
typedef struct _MetaDrawInfo MetaDrawInfo;
|
|
Packit |
5e0819 |
typedef struct _MetaDrawOp MetaDrawOp;
|
|
Packit |
5e0819 |
typedef struct _MetaDrawOpList MetaDrawOpList;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/**
|
|
Packit |
5e0819 |
* A drawing operation in our simple vector drawing language.
|
|
Packit |
5e0819 |
*/
|
|
Packit |
5e0819 |
typedef enum
|
|
Packit |
5e0819 |
{
|
|
Packit |
5e0819 |
/** Basic drawing-- line */
|
|
Packit |
5e0819 |
META_DRAW_LINE,
|
|
Packit |
5e0819 |
/** Basic drawing-- rectangle */
|
|
Packit |
5e0819 |
META_DRAW_RECTANGLE,
|
|
Packit |
5e0819 |
/** Basic drawing-- arc */
|
|
Packit |
5e0819 |
META_DRAW_ARC,
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/** Clip to a rectangle */
|
|
Packit |
5e0819 |
META_DRAW_CLIP,
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/* Texture thingies */
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/** Just a filled rectangle with alpha */
|
|
Packit |
5e0819 |
META_DRAW_TINT,
|
|
Packit |
5e0819 |
META_DRAW_GRADIENT,
|
|
Packit |
5e0819 |
META_DRAW_IMAGE,
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/** GTK theme engine stuff */
|
|
Packit |
5e0819 |
META_DRAW_GTK_ARROW,
|
|
Packit |
5e0819 |
META_DRAW_GTK_BOX,
|
|
Packit |
5e0819 |
META_DRAW_GTK_VLINE,
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/** App's window icon */
|
|
Packit |
5e0819 |
META_DRAW_ICON,
|
|
Packit |
5e0819 |
/** App's window title */
|
|
Packit |
5e0819 |
META_DRAW_TITLE,
|
|
Packit |
5e0819 |
/** a draw op list */
|
|
Packit |
5e0819 |
META_DRAW_OP_LIST,
|
|
Packit |
5e0819 |
/** tiled draw op list */
|
|
Packit |
5e0819 |
META_DRAW_TILE
|
|
Packit |
5e0819 |
} MetaDrawType;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
typedef enum
|
|
Packit |
5e0819 |
{
|
|
Packit |
5e0819 |
META_IMAGE_FILL_SCALE, /* default, needs to be all-bits-zero for g_new0 */
|
|
Packit |
5e0819 |
META_IMAGE_FILL_TILE
|
|
Packit |
5e0819 |
} MetaImageFillType;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct _MetaDrawInfo
|
|
Packit |
5e0819 |
{
|
|
Packit |
5e0819 |
gint scale;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
GdkPixbuf *mini_icon;
|
|
Packit |
5e0819 |
GdkPixbuf *icon;
|
|
Packit |
5e0819 |
PangoLayout *title_layout;
|
|
Packit |
5e0819 |
gint title_layout_width;
|
|
Packit |
5e0819 |
gint title_layout_height;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
gint left_width;
|
|
Packit |
5e0819 |
gint right_width;
|
|
Packit |
5e0819 |
gint top_height;
|
|
Packit |
5e0819 |
gint bottom_height;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
gdouble width;
|
|
Packit |
5e0819 |
gdouble height;
|
|
Packit |
5e0819 |
};
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/**
|
|
Packit |
5e0819 |
* A single drawing operation in our simple vector drawing language.
|
|
Packit |
5e0819 |
*/
|
|
Packit |
5e0819 |
struct _MetaDrawOp
|
|
Packit |
5e0819 |
{
|
|
Packit |
5e0819 |
MetaDrawType type;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
/* Positions are strings because they can be expressions */
|
|
Packit |
5e0819 |
union
|
|
Packit |
5e0819 |
{
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaColorSpec *color_spec;
|
|
Packit |
5e0819 |
int dash_on_length;
|
|
Packit |
5e0819 |
int dash_off_length;
|
|
Packit |
5e0819 |
int width;
|
|
Packit |
5e0819 |
MetaDrawSpec *x1;
|
|
Packit |
5e0819 |
MetaDrawSpec *y1;
|
|
Packit |
5e0819 |
MetaDrawSpec *x2;
|
|
Packit |
5e0819 |
MetaDrawSpec *y2;
|
|
Packit |
5e0819 |
} line;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaColorSpec *color_spec;
|
|
Packit |
5e0819 |
gboolean filled;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
} rectangle;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaColorSpec *color_spec;
|
|
Packit |
5e0819 |
gboolean filled;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
double start_angle;
|
|
Packit |
5e0819 |
double extent_angle;
|
|
Packit |
5e0819 |
} arc;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
} clip;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaColorSpec *color_spec;
|
|
Packit |
5e0819 |
MetaAlphaGradientSpec *alpha_spec;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
} tint;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaGradientSpec *gradient_spec;
|
|
Packit |
5e0819 |
MetaAlphaGradientSpec *alpha_spec;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
} gradient;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaColorSpec *colorize_spec;
|
|
Packit |
5e0819 |
MetaAlphaGradientSpec *alpha_spec;
|
|
Packit |
5e0819 |
GdkPixbuf *pixbuf;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
guint32 colorize_cache_pixel;
|
|
Packit |
5e0819 |
GdkPixbuf *colorize_cache_pixbuf;
|
|
Packit |
5e0819 |
MetaImageFillType fill_type;
|
|
Packit |
5e0819 |
unsigned int vertical_stripes : 1;
|
|
Packit |
5e0819 |
unsigned int horizontal_stripes : 1;
|
|
Packit |
5e0819 |
} image;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
GtkStateFlags state;
|
|
Packit |
5e0819 |
GtkShadowType shadow;
|
|
Packit |
5e0819 |
GtkArrowType arrow;
|
|
Packit |
5e0819 |
gboolean filled;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
} gtk_arrow;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
GtkStateFlags state;
|
|
Packit |
5e0819 |
GtkShadowType shadow;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
} gtk_box;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
GtkStateFlags state;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y1;
|
|
Packit |
5e0819 |
MetaDrawSpec *y2;
|
|
Packit |
5e0819 |
} gtk_vline;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaAlphaGradientSpec *alpha_spec;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
MetaImageFillType fill_type;
|
|
Packit |
5e0819 |
} icon;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaColorSpec *color_spec;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *ellipsize_width;
|
|
Packit |
5e0819 |
} title;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaDrawOpList *op_list;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
} op_list;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
struct {
|
|
Packit |
5e0819 |
MetaDrawOpList *op_list;
|
|
Packit |
5e0819 |
MetaDrawSpec *x;
|
|
Packit |
5e0819 |
MetaDrawSpec *y;
|
|
Packit |
5e0819 |
MetaDrawSpec *width;
|
|
Packit |
5e0819 |
MetaDrawSpec *height;
|
|
Packit |
5e0819 |
MetaDrawSpec *tile_xoffset;
|
|
Packit |
5e0819 |
MetaDrawSpec *tile_yoffset;
|
|
Packit |
5e0819 |
MetaDrawSpec *tile_width;
|
|
Packit |
5e0819 |
MetaDrawSpec *tile_height;
|
|
Packit |
5e0819 |
} tile;
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
} data;
|
|
Packit |
5e0819 |
};
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
MetaDrawOp *meta_draw_op_new (MetaDrawType type);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
void meta_draw_op_free (MetaDrawOp *op);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
MetaDrawOpList *meta_draw_op_list_new (int n_preallocs);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
void meta_draw_op_list_ref (MetaDrawOpList *op_list);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
void meta_draw_op_list_unref (MetaDrawOpList *op_list);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
void meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list,
|
|
Packit |
5e0819 |
GtkStyleContext *context,
|
|
Packit |
5e0819 |
cairo_t *cr,
|
|
Packit |
5e0819 |
const MetaDrawInfo *info,
|
|
Packit |
5e0819 |
MetaRectangleDouble rect);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
void meta_draw_op_list_append (MetaDrawOpList *op_list,
|
|
Packit |
5e0819 |
MetaDrawOp *op);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
gboolean meta_draw_op_list_validate (MetaDrawOpList *op_list,
|
|
Packit |
5e0819 |
GError **error);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_GNUC_INTERNAL
|
|
Packit |
5e0819 |
gboolean meta_draw_op_list_contains (MetaDrawOpList *op_list,
|
|
Packit |
5e0819 |
MetaDrawOpList *child);
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
G_END_DECLS
|
|
Packit |
5e0819 |
|
|
Packit |
5e0819 |
#endif
|