summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-scalable-font.h
blob: 61b36ed9003d6075c768eea2f40215cefd54dd2f (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
/* -*- 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 <libnautilus-extensions/nautilus-art-extensions.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);
NautilusScalableFont  *nautilus_scalable_font_new                             (const char                  *family,
									       const char                  *weight,
									       const char                  *slant,
									       const char                  *set_width);
NautilusDimensions     nautilus_scalable_font_measure_text                    (const NautilusScalableFont  *font,
									       int                          font_size,
									       const char                  *text,
									       guint                        text_length);
int                    nautilus_scalable_font_text_width                      (const NautilusScalableFont  *font,
									       int                          font_size,
									       const char                  *text,
									       guint                        text_length);
void                   nautilus_scalable_font_draw_text                       (const NautilusScalableFont  *font,
									       GdkPixbuf                   *destination_pixbuf,
									       int                          x,
									       int                          y,
									       const ArtIRect              *clip_area,
									       int                          font_size,
									       const char                  *text,
									       guint                        text_length,
									       guint32                      color,
									       int                          opacity);
void                   nautilus_scalable_font_measure_text_lines              (const NautilusScalableFont  *font,
									       int                          font_size,
									       const char                  *text,
									       guint                        num_text_lines,
									       double                       empty_line_height,
									       NautilusDimensions           text_line_dimensions[],
									       int                         *max_width_out,
									       int                         *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,
									       int                          font_size,
									       const char                  *text,
									       guint                        num_text_lines,
									       const NautilusDimensions    *text_line_dimensions,
									       GtkJustification             justification,
									       int                          line_offset,
									       double                       empty_line_height,
									       guint32                      color,
									       int                          opacity);
void                   nautilus_scalable_font_draw_text_lines                 (const NautilusScalableFont  *font,
									       GdkPixbuf                   *destination_pixbuf,
									       int                          x,
									       int                          y,
									       const ArtIRect              *clip_area,
									       int                          font_size,
									       const char                  *text,
									       GtkJustification             justification,
									       int                          line_offset,
									       double                       empty_line_height,
									       guint32                      color,
									       int                          opacity);
int                    nautilus_scalable_font_largest_fitting_font_size       (const NautilusScalableFont  *font,
									       const char                  *text,
									       int                          available_width,
									       int                          minimum_acceptable_font_size,
									       int                          maximum_acceptable_font_size);
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);
NautilusScalableFont  *nautilus_scalable_font_make_bold                       (NautilusScalableFont        *font);

END_GNOME_DECLS

#endif /* NAUTILUS_SCALABLE_FONT_H */