summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-scalable-font.h
blob: b8450bc9e4f43f1b428b42f23d394401860e13c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */

/* nautilus-scalable-font.h - A GtkObject subclass for access to scalable fonts.

   Copyright (C) 1999, 2000 Eazel, Inc.

   The Gnome Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   The Gnome Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with the Gnome Library; see the file COPYING.LIB.  If not,
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.

   Authors: Ramiro Estrugo <ramiro@eazel.com>
*/

/* NautilusScalableFont is a GtkObject that provdes a simple
 * interface to Raph Levien's librsvg FreeType2 based anti aliased
 * text rendering.
 *
 * Currently, only Type1 fonts are supported.
 *
 * Fonts are automatically queried and used if available.  Right
 * now this is fairly simple code which does not handle all the 
 * complexities of the hell that is unix fonts.
 *
 * In the Star Trek future, we will use gnome-print (gnome-font?).
 * However, we will keep the interface to scalable font usage simple
 * and hidden behind this interface.
 */

#ifndef NAUTILUS_SCALABLE_FONT_H
#define NAUTILUS_SCALABLE_FONT_H

#include <gtk/gtkobject.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <libgnome/gnome-defs.h>
#include <libnautilus-extensions/nautilus-string-list.h>
#include <libart_lgpl/art_rect.h>

BEGIN_GNOME_DECLS

#define NAUTILUS_TYPE_SCALABLE_FONT		(nautilus_scalable_font_get_type ())
#define NAUTILUS_SCALABLE_FONT(obj)		(GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_SCALABLE_FONT, NautilusScalableFont))
#define NAUTILUS_SCALABLE_FONT_CLASS(klass)	(GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_SCALABLE_FONT, NautilusScalableFontClass))
#define NAUTILUS_IS_SCALABLE_FONT(obj)		(GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_SCALABLE_FONT))
#define NAUTILUS_IS_SCALABLE_FONT_CLASS(klass)	(GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_SCALABLE_FONT))

typedef struct _NautilusScalableFont	       NautilusScalableFont;
typedef struct _NautilusScalableFontClass      NautilusScalableFontClass;
typedef struct _NautilusScalableFontDetail     NautilusScalableFontDetail;

struct _NautilusScalableFont
{
	/* Superclass */
	GtkObject		object;

	/* Private things */
	NautilusScalableFontDetail	*detail;
};

struct _NautilusScalableFontClass
{
	GtkObjectClass		parent_class;
};

GtkType                nautilus_scalable_font_get_type                        (void);
GtkObject *            nautilus_scalable_font_new                             (const char                  *family,
									       const char                  *weight,
									       const char                  *slant,
									       const char                  *set_width);
void                   nautilus_scalable_font_measure_text                    (const NautilusScalableFont  *font,
									       guint                        font_width,
									       guint                        font_height,
									       const char                  *text,
									       guint                        text_length,
									       guint                       *text_width_out,
									       guint                       *text_height_out);
void                   nautilus_scalable_font_draw_text                       (const NautilusScalableFont  *font,
									       GdkPixbuf                   *destination_pixbuf,
									       int                          x,
									       int                          y,
									       const ArtIRect              *clip_area,
									       guint                        font_width,
									       guint                        font_height,
									       const char                  *text,
									       guint                        text_length,
									       guint32                      color,
									       guchar                       overall_alpha);
void                   nautilus_scalable_font_measure_text_lines              (const NautilusScalableFont  *font,
									       guint                        font_width,
									       guint                        font_height,
									       const char                  *text,
									       guint                        num_text_lines,
									       guint                        text_line_widths[],
									       guint                        text_line_heights[],
									       guint                       *max_width_out,
									       guint                       *total_height_out);
void                   nautilus_scalable_font_draw_text_lines_with_dimensions (const NautilusScalableFont  *font,
									       GdkPixbuf                   *destination_pixbuf,
									       int                          x,
									       int                          y,
									       const ArtIRect              *clip_area,
									       guint                        font_width,
									       guint                        font_height,
									       const char                  *text,
									       guint                        num_text_lines,
									       const guint                 *text_line_widths,
									       const guint                 *text_line_heights,
									       GtkJustification             justification,
									       guint                        line_offset,
									       guint32                      color,
									       guchar                       overall_alpha);
void                   nautilus_scalable_font_draw_text_lines                 (const NautilusScalableFont  *font,
									       GdkPixbuf                   *destination_pixbuf,
									       int                          x,
									       int                          y,
									       const ArtIRect              *clip_area,
									       guint                        font_width,
									       guint                        font_height,
									       const char                  *text,
									       GtkJustification             justification,
									       guint                        line_offset,
									       guint32                      color,
									       guchar                       overall_alpha);
guint                  nautilus_scalable_font_largest_fitting_font_size       (const NautilusScalableFont  *font,
									       const char                  *text,
									       guint                        available_width,
									       const guint                  font_sizes[],
									       guint                        num_font_sizes);
NautilusScalableFont  *nautilus_scalable_font_get_default_font                (void);
NautilusStringList *   nautilus_scalable_font_get_font_family_list            (void);
gboolean               nautilus_scalable_font_query_font                      (const char                  *family,
									       NautilusStringList         **weights,
									       NautilusStringList         **slants,
									       NautilusStringList         **set_widths);
gboolean               nautilus_scalable_font_query_font                      (const char                  *family,
									       NautilusStringList         **weights,
									       NautilusStringList         **slants,
									       NautilusStringList         **set_widths);


END_GNOME_DECLS

#endif /* NAUTILUS_SCALABLE_FONT_H */