1 #ifndef _GNM_RENDERED_VALUE_H_
2 # define _GNM_RENDERED_VALUE_H_
3 
4 #include <gnumeric.h>
5 #include <pango/pango.h>
6 
7 G_BEGIN_DECLS
8 
9 struct _GnmRenderedValue {
10 	PangoLayout *layout;
11 
12 	/* In pango units:  */
13 	int layout_natural_width, layout_natural_height;
14 
15 	/* In pixels:  */
16 	guint16 indent_left, indent_right;
17 
18 	GOColor go_fore_color;
19 
20 	guint effective_halign : 8;
21 	guint effective_valign : 5;
22 	guint variable_width : 1;   /* result depends on the width of cell */
23 	guint hfilled : 1;
24 	guint vfilled : 1;
25 	guint wrap_text : 1;
26 	guint might_overflow : 1;   /* Subject to ####### treatment.  */
27 	guint numeric_overflow : 1; /* ####### has happened.  */
28 	guint noborders : 1;        /* Valid for rotated only.  */
29 	guint drawn : 1;            /* Has drawing layout taken place?  */
30 	signed int rotation : 10;
31 };
32 
33 struct _GnmRenderedRotatedValue {
34 	GnmRenderedValue rv;
35 	guint sin_a_neg : 1;
36 	int linecount;
37 	struct GnmRenderedRotatedValueInfo {
38 		int dx, dy;
39 	} *lines;
40 };
41 
42 GnmRenderedValue *gnm_rendered_value_new       (GnmCell const *cell,
43 						PangoContext *context,
44 						gboolean variable_width,
45 						double zoom);
46 void              gnm_rendered_value_destroy   (GnmRenderedValue *rv);
47 
48 void              gnm_rendered_value_remeasure (GnmRenderedValue *rv);
49 
50 /* Return the value as a single string without format infomation.  */
51 char const *gnm_rendered_value_get_text (GnmRenderedValue const * rv);
52 
53 GOColor gnm_rendered_value_get_color (GnmRenderedValue const * rv);
54 
55 /* ------------------------------------------------------------------------- */
56 
57 struct _GnmRenderedValueCollection {
58 	PangoContext *context;
59 
60 	gsize size;
61 	GHashTable *values;
62 };
63 
64 GnmRenderedValueCollection *gnm_rvc_new (PangoContext *context,
65 					 gsize size);
66 void gnm_rvc_free (GnmRenderedValueCollection *rvc);
67 GnmRenderedValue *gnm_rvc_query (GnmRenderedValueCollection *rvc,
68 				 GnmCell const *cell);
69 void gnm_rvc_store (GnmRenderedValueCollection *rvc,
70 		    GnmCell const *cell,
71 		    GnmRenderedValue *rv);
72 void gnm_rvc_remove (GnmRenderedValueCollection *rvc,
73 		     GnmCell const *cell);
74 
75 /* ------------------------------------------------------------------------- */
76 
77 void gnm_rendered_value_init (void);
78 void gnm_rendered_value_shutdown (void);
79 
80 G_END_DECLS
81 
82 #endif /* _GNM_RENDERED_VALUE_H_ */
83