Commit 6700994c authored by Tim Janik's avatar Tim Janik Committed by Tim Janik

buncha cleanups, kludged build sources dependencies with a Makefile:

Thu Oct 26 07:36:16 2000  Tim Janik  <timj@gtk.org>

        * gtk/Makefile.am: buncha cleanups, kludged build sources
        dependencies with a Makefile: oldest-source-stamp dependancy
        for the moment. automake is really fighting us here, with
        intentionally not allowing user-defined rules or dependancies
        prior to it's -include $(DEP_FILES) statement. sucks rocks!

        * gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
        to public headers. tehy have a comment stating that they are
        "semi-public" aren't included by gtk.h and if enums popup there,
        they can be /*< skip >*/-ed.

        * gtk/gtktextlayout.h:
        * gtk/gtktextdisplay.h: indentation fixes, comment fixes,
        added LGPL... <SIGH>
parent f12ddea3
Thu Oct 26 07:36:16 2000 Tim Janik <timj@gtk.org>
* gtk/Makefile.am: buncha cleanups, kludged build sources
dependencies with a Makefile: oldest-source-stamp dependancy
for the moment. automake is really fighting us here, with
intentionally not allowing user-defined rules or dependancies
prior to it's -include $(DEP_FILES) statement. sucks rocks!
* gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
to public headers. tehy have a comment stating that they are
"semi-public" aren't included by gtk.h and if enums popup there,
they can be /*< skip >*/-ed.
* gtk/gtktextlayout.h:
* gtk/gtktextdisplay.h: indentation fixes, comment fixes,
added LGPL... <SIGH>
Wed Oct 25 20:40:25 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h: Got rid of GtkTreeNode, and changed it to
......
Thu Oct 26 07:36:16 2000 Tim Janik <timj@gtk.org>
* gtk/Makefile.am: buncha cleanups, kludged build sources
dependencies with a Makefile: oldest-source-stamp dependancy
for the moment. automake is really fighting us here, with
intentionally not allowing user-defined rules or dependancies
prior to it's -include $(DEP_FILES) statement. sucks rocks!
* gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
to public headers. tehy have a comment stating that they are
"semi-public" aren't included by gtk.h and if enums popup there,
they can be /*< skip >*/-ed.
* gtk/gtktextlayout.h:
* gtk/gtktextdisplay.h: indentation fixes, comment fixes,
added LGPL... <SIGH>
Wed Oct 25 20:40:25 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h: Got rid of GtkTreeNode, and changed it to
......
Thu Oct 26 07:36:16 2000 Tim Janik <timj@gtk.org>
* gtk/Makefile.am: buncha cleanups, kludged build sources
dependencies with a Makefile: oldest-source-stamp dependancy
for the moment. automake is really fighting us here, with
intentionally not allowing user-defined rules or dependancies
prior to it's -include $(DEP_FILES) statement. sucks rocks!
* gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
to public headers. tehy have a comment stating that they are
"semi-public" aren't included by gtk.h and if enums popup there,
they can be /*< skip >*/-ed.
* gtk/gtktextlayout.h:
* gtk/gtktextdisplay.h: indentation fixes, comment fixes,
added LGPL... <SIGH>
Wed Oct 25 20:40:25 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h: Got rid of GtkTreeNode, and changed it to
......
Thu Oct 26 07:36:16 2000 Tim Janik <timj@gtk.org>
* gtk/Makefile.am: buncha cleanups, kludged build sources
dependencies with a Makefile: oldest-source-stamp dependancy
for the moment. automake is really fighting us here, with
intentionally not allowing user-defined rules or dependancies
prior to it's -include $(DEP_FILES) statement. sucks rocks!
* gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
to public headers. tehy have a comment stating that they are
"semi-public" aren't included by gtk.h and if enums popup there,
they can be /*< skip >*/-ed.
* gtk/gtktextlayout.h:
* gtk/gtktextdisplay.h: indentation fixes, comment fixes,
added LGPL... <SIGH>
Wed Oct 25 20:40:25 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h: Got rid of GtkTreeNode, and changed it to
......
Thu Oct 26 07:36:16 2000 Tim Janik <timj@gtk.org>
* gtk/Makefile.am: buncha cleanups, kludged build sources
dependencies with a Makefile: oldest-source-stamp dependancy
for the moment. automake is really fighting us here, with
intentionally not allowing user-defined rules or dependancies
prior to it's -include $(DEP_FILES) statement. sucks rocks!
* gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
to public headers. tehy have a comment stating that they are
"semi-public" aren't included by gtk.h and if enums popup there,
they can be /*< skip >*/-ed.
* gtk/gtktextlayout.h:
* gtk/gtktextdisplay.h: indentation fixes, comment fixes,
added LGPL... <SIGH>
Wed Oct 25 20:40:25 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h: Got rid of GtkTreeNode, and changed it to
......
Thu Oct 26 07:36:16 2000 Tim Janik <timj@gtk.org>
* gtk/Makefile.am: buncha cleanups, kludged build sources
dependencies with a Makefile: oldest-source-stamp dependancy
for the moment. automake is really fighting us here, with
intentionally not allowing user-defined rules or dependancies
prior to it's -include $(DEP_FILES) statement. sucks rocks!
* gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
to public headers. tehy have a comment stating that they are
"semi-public" aren't included by gtk.h and if enums popup there,
they can be /*< skip >*/-ed.
* gtk/gtktextlayout.h:
* gtk/gtktextdisplay.h: indentation fixes, comment fixes,
added LGPL... <SIGH>
Wed Oct 25 20:40:25 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h: Got rid of GtkTreeNode, and changed it to
......
Thu Oct 26 07:36:16 2000 Tim Janik <timj@gtk.org>
* gtk/Makefile.am: buncha cleanups, kludged build sources
dependencies with a Makefile: oldest-source-stamp dependancy
for the moment. automake is really fighting us here, with
intentionally not allowing user-defined rules or dependancies
prior to it's -include $(DEP_FILES) statement. sucks rocks!
* gtk/Makefile.am: added gtktextlayout.h and gtktextdisplay.h
to public headers. tehy have a comment stating that they are
"semi-public" aren't included by gtk.h and if enums popup there,
they can be /*< skip >*/-ed.
* gtk/gtktextlayout.h:
* gtk/gtktextdisplay.h: indentation fixes, comment fixes,
added LGPL... <SIGH>
Wed Oct 25 20:40:25 2000 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h: Got rid of GtkTreeNode, and changed it to
......
......@@ -39,15 +39,13 @@ LDFLAGS = @STRIP_BEGIN@ \
-lm \
@STRIP_END@
# $(top_builddir)/gdk/libgdk-1.3.la
#
# setup source file variables
#
# GTK+ header files for public installation (non-generated, or generated
# by configure)
gtk_public_h_sources = @STRIP_BEGIN@ \
gtk.h \
gtkaccelgroup.h \
......@@ -157,7 +155,9 @@ gtk_public_h_sources = @STRIP_BEGIN@ \
gtktearoffmenuitem.h \
gtktextbuffer.h \
gtktextchild.h \
gtktextdisplay.h \
gtktextiter.h \
gtktextlayout.h \
gtktextmark.h \
gtktexttag.h \
gtktexttagtable.h \
......@@ -187,19 +187,6 @@ gtk_public_h_sources = @STRIP_BEGIN@ \
gtkwidget.h \
gtkwindow.h \
@STRIP_END@
#
# GTK+ header files that we install, but don't extract enums from
# (This class is iffy; we have it for the semi-public interface
# of the Text widget, which is useful for writing new view types
# such as a Canvas text item, but isn't part of the clean public
# interface)
gtk_semipublic_h_sources = @STRIP_BEGIN@ \
gtktextdisplay.h \
gtktextlayout.h \
@STRIP_END@
# GTK+ header files that don't get installed
gtk_private_h_sources = @STRIP_BEGIN@ \
gtkrbtree.h \
......@@ -212,12 +199,8 @@ gtk_private_h_sources = @STRIP_BEGIN@ \
gtktexttagprivate.h \
gtktreeprivate.h \
@STRIP_END@
# GTK+ C sources to build the library from
gtk_c_sources = @STRIP_BEGIN@ \
gtk_c_sources = @STRIP_BEGIN@ \
gtkaccelgroup.c \
gtkaccellabel.c \
gtkadjustment.c \
......@@ -365,12 +348,40 @@ gtk_c_sources = @STRIP_BEGIN@ \
fnmatch.h \
gdk-pixbuf-loader.c \
@STRIP_END@
# Extra headers that are used for enum type array/id generation
gdk_headers = @STRIP_BEGIN@ \
../gdk/gdkcc.h \
../gdk/gdkcolor.h \
../gdk/gdkcursor.h \
../gdk/gdkdnd.h \
../gdk/gdkdrawable.h \
../gdk/gdkevents.h \
../gdk/gdkfont.h \
../gdk/gdkgc.h \
../gdk/gdkim.h \
../gdk/gdkimage.h \
../gdk/gdkinput.h \
../gdk/gdkpixmap.h \
../gdk/gdkproperty.h \
../gdk/gdkregion.h \
../gdk/gdkrgb.h \
../gdk/gdkselection.h \
../gdk/gdktypes.h \
../gdk/gdkvisual.h \
../gdk/gdkwindow.h \
@STRIP_END@
# we use our own built_sources variable rules to avoid automake's
# BUILT_SOURCES oddities
# we generate frequently rebuild files piggyback on a stamp file, so sources
# depending on them only get rebuild when the built source actually changed
# content
#
# built sources that get installed with the header files
gtk_built_public_sources = @STRIP_BEGIN@ \
gtkmarshal.h \
gtktypebuiltins.h \
@STRIP_END@
# built sources that don't get installed
gtk_built_sources = @STRIP_BEGIN@ \
stamp-gtk.defs \
......@@ -381,12 +392,7 @@ gtk_built_sources = @STRIP_BEGIN@ \
gtktypebuiltins_evals.c \
gtkmarshal.c \
gtk.defs \
@STRIP_END@
# built sources that get installed with the header files
gtk_built_public_sources = @STRIP_BEGIN@ \
gtkcompat.h \
gtkmarshal.h \
gtktypebuiltins.h \
${gtk_built_public_sources} \
@STRIP_END@
# non-header sources (headers should be specified in the above variables)
# that don't serve as direct make target sources, i.e. they don't have
......@@ -399,66 +405,19 @@ gtk_extra_sources = @STRIP_BEGIN@ \
makeenums.h \
gtkargcollector.c \
gtk-boxed.defs \
genmarshal.c \
gtkmarshal.list \
@STRIP_END@
# Extra headers that are used for enum type array/id generation
gdk_headers = @STRIP_BEGIN@ \
../gdk/gdkcc.h \
../gdk/gdkcolor.h \
../gdk/gdkcursor.h \
../gdk/gdkdnd.h \
../gdk/gdkdrawable.h \
../gdk/gdkevents.h \
../gdk/gdkfont.h \
../gdk/gdkgc.h \
../gdk/gdkim.h \
../gdk/gdkimage.h \
../gdk/gdkinput.h \
../gdk/gdkpixmap.h \
../gdk/gdkproperty.h \
../gdk/gdkregion.h \
../gdk/gdkrgb.h \
../gdk/gdkselection.h \
../gdk/gdktypes.h \
../gdk/gdkvisual.h \
../gdk/gdkwindow.h \
@STRIP_END@
#
# setup GTK+ sources and their dependancies
#
all_headers = $(gtk_public_h_sources) $(gtk_semipublic_h_sources) $(gtk_built_public_sources)
all_sources = $(gtk_c_sources)
extra = @gtktargetlib@
if USE_X11
libgtk_x11_includedir = $(includedir)/gtk-2.0/gtk
libgtk_x11_include_HEADERS = $(all_headers)
libgtk_x11_1_3_la_SOURCES = $(all_sources)
endif
if USE_NANOX
libgtk_nanox_includedir = $(includedir)/gtk-2.0/gtk
libgtk_nanox_include_HEADERS = $(all_headers)
libgtk_nanox_1_3_la_SOURCES = $(all_sources)
endif
if USE_LINUX_FB
libgtk_linux_fb_includedir = $(includedir)/gtk-2.0/gtk
libgtk_linux_fb_include_HEADERS = $(all_headers)
libgtk_linux_fb_1_3_la_SOURCES = $(all_sources)
endif
# now define the real one to workaround automake's mishandling
lib_LTLIBRARIES = $(extra)
EXTRA_LTLIBRARIES = libgtk-x11-1.3.la libgtk-nanox-1.3.la libgtk-linux-fb-1.3.la
MAINTAINERCLEANFILES += $(gtk_built_public_sources) $(gtk_built_sources)
gtk_target_headers = $(gtk_public_h_sources) $(gtk_built_public_sources)
gtk_target_sources = $(gtk_c_sources)
MAINTAINERCLEANFILES += $(gtk_built_sources)
EXTRA_HEADERS +=
EXTRA_DIST += $(gtk_private_h_sources)
EXTRA_DIST += $(gtk_built_sources) $(gtk_built_public_sources) $(gtk_extra_sources)
EXTRA_DIST += $(gtk_private_h_sources) $(gtk_extra_sources)
EXTRA_DIST += $(gtk_built_sources)
#
# rules to generate built sources
......@@ -466,13 +425,14 @@ EXTRA_DIST += $(gtk_built_sources) $(gtk_built_public_sources) $(gtk_extra_sourc
# setup autogeneration dependancies
gen_sources = xgen-gdef xgen-gtbh xgen-gtbvc xgen-gtbic xgen-gtbec xgen-gmh xgen-gmc
CLEANFILES += $(gen_sources)
OLD_STAMP: $(gtk_built_public_sources) $(gtk_built_sources)
$(OBJECTS): OLD_STAMP # this is our oldest-source-stamp
Makefile: oldest-source-stamp # oh boy, does automake SUCK!
oldest-source-stamp: $(gtk_built_sources)
$(OBJECTS): oldest-source-stamp ${gtk_built_public_sources} # this is our oldest file, used for implicit auto-generation deps
# initial creation of the real stamp-* files
gtk.defs gtkmarshal.h gtktypebuiltins.h: # never add deps here
test -f "$(srcdir)/$@" || touch $(srcdir)/$@
# normal autogeneration rules
# all autogenerated files need to generated in the srcdir,
# all autogenerated files need to be generated in the srcdir,
# so old versions get remade and are not confused with newer
# versions in the build dir. thus a development setup requires
# srcdir to be writable, passing --disable-rebuilds to
......@@ -484,15 +444,17 @@ $(srcdir)/stamp-gtk.defs: @REBUILD@ makeenums.pl gtk.defs gtk-boxed.defs $(gtk_p
&& (cmp -s xgen-gdef gtk.defs || cp xgen-gdef gtk.defs) \
&& rm -f xgen-gdef \
&& echo timestamp > $(@F)
$(srcdir)/gtkmarshal.c: stamp-gtkmarshal.h
$(srcdir)/gtkmarshal.c $(srcdir)/stamp-gtkmarshal.h: @REBUILD@ gtkmarshal.list gtkmarshal.h
$(srcdir)/stamp-gtkmarshal.h: @REBUILD@ gtkmarshal.list gtkmarshal.h
cd $(srcdir) \
&& glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --header >> xgen-gmh \
&& (cmp -s xgen-gmh gtkmarshal.h || cp xgen-gmh gtkmarshal.h) \
&& rm -f xgen-gmh xgen-gmh~ \
&& echo timestamp > $(@F)
$(srcdir)/gtkmarshal.c: $(srcdir)/stamp-gtkmarshal.h
cd $(srcdir) \
&& glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --header --skip-source >> xgen-gmh \
&& glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --body >> xgen-gmc \
&& cp xgen-gmc gtkmarshal.c \
&& (cmp -s xgen-gmh gtkmarshal.h || cp xgen-gmh gtkmarshal.h) \
&& rm -f xgen-gmh xgen-gmc xgen-gmh~ xgen-gmc~ \
&& echo timestamp > stamp-gtkmarshal.h
&& rm -f xgen-gmc xgen-gmc~
$(srcdir)/stamp-gtktypebuiltins.h: @REBUILD@ maketypes.awk stamp-gtk.defs gtktypebuiltins.h
cd $(srcdir) \
&& LC_ALL=C $(AWK) -f maketypes.awk gtk.defs macros > xgen-gtbh \
......@@ -516,6 +478,28 @@ $(srcdir)/gtktypebuiltins_evals.c: @REBUILD@ makeenums.pl $(gtk_public_h_sources
&& rm -f xgen-gtbec
# target platform:
lib_ltlibraries = @gtktargetlib@
# now define the real one to workaround automake's mishandling
lib_LTLIBRARIES = $(lib_ltlibraries)
if USE_X11
libgtk_x11_includedir = $(includedir)/gtk-2.0/gtk
libgtk_x11_include_HEADERS = $(gtk_target_headers)
libgtk_x11_1_3_la_SOURCES = $(gtk_target_sources)
endif
if USE_NANOX
libgtk_nanox_includedir = $(includedir)/gtk-2.0/gtk
libgtk_nanox_include_HEADERS = $(gtk_target_headers)
libgtk_nanox_1_3_la_SOURCES = $(gtk_target_sources)
endif
if USE_LINUX_FB
libgtk_linux_fb_includedir = $(includedir)/gtk-2.0/gtk
libgtk_linux_fb_include_HEADERS = $gtk_target_headers)
libgtk_linux_fb_1_3_la_SOURCES = $(gtk_target_sources)
endif
EXTRA_LTLIBRARIES = libgtk-x11-1.3.la libgtk-nanox-1.3.la libgtk-linux-fb-1.3.la
gtkconfdir = $(sysconfdir)/gtk-2.0
gtkconf_DATA = gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
......@@ -528,33 +512,31 @@ gtkconf_DATA = gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
# We create a dummy theme for the default GTK+ theme
install-data-local:
$(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk-2.0
echo "# Empty gtkrc for default theme" > \
$(DESTDIR)$(datadir)/themes/Default/gtk-2.0/gtkrc
echo "# Empty gtkrc for default theme" > $(DESTDIR)$(datadir)/themes/Default/gtk-2.0/gtkrc
$(mkinstalldirs) $(DESTDIR)$(gtkconfdir)
cd $(DESTDIR)$(gtkconfdir) && \
for i in cs hr hu pl ro sk sl sq sr ; do \
rm -f gtkrc.$$i ; \
ln -s gtkrc.iso-8859-2 gtkrc.$$i ; \
done ; \
for i in bg_BG.iso88595 mk sp ru_RU.iso88595 ; do \
rm -f gtkrc.$$i ; \
ln -s gtkrc.iso-8859-5 gtkrc.$$i ; \
done ; \
rm -f gtkrc.lt gtkrc.lv gtkrc.cy gtkrc.ga gtkrc.et gtkrc.ka \
gtkrc.vi_VN.viscii111 gtkrc.vi_VN.tcvn5712 gtkrc.vi \
gtkrc.be gtkrc.bg ; \
ln -s gtkrc.iso-8859-13 gtkrc.lt ; \
ln -s gtkrc.iso-8859-13 gtkrc.lv ; \
ln -s gtkrc.iso-8859-14 gtkrc.cy ; \
ln -s gtkrc.iso-8859-14 gtkrc.ga ; \
ln -s gtkrc.iso-8859-15 gtkrc.et ; \
ln -s gtkrc.ka_GE.georgianacademy gtkrc.ka ; \
ln -s gtkrc.vi_VN.viscii gtkrc.vi_VN.viscii111 ; \
ln -s gtkrc.vi_VN.tcvn gtkrc.vi_VN.tcvn5712 ; \
ln -s gtkrc.vi_VN.tcvn5712 gtkrc.vi ; \
ln -s gtkrc.cp1251 gtkrc.be ; \
ln -s gtkrc.cp1251 gtkrc.bg
cd $(DESTDIR)$(gtkconfdir) \
&& for i in cs hr hu pl ro sk sl sq sr ; do \
rm -f gtkrc.$$i ; \
ln -s gtkrc.iso-8859-2 gtkrc.$$i ; \
done \
&& for i in bg_BG.iso88595 mk sp ru_RU.iso88595 ; do \
rm -f gtkrc.$$i ; \
ln -s gtkrc.iso-8859-5 gtkrc.$$i ; \
done \
&& rm -f gtkrc.lt gtkrc.lv gtkrc.cy gtkrc.ga gtkrc.et gtkrc.ka \
gtkrc.vi_VN.viscii111 gtkrc.vi_VN.tcvn5712 gtkrc.vi \
gtkrc.be gtkrc.bg \
&& ln -s gtkrc.iso-8859-13 gtkrc.lt \
&& ln -s gtkrc.iso-8859-13 gtkrc.lv \
&& ln -s gtkrc.iso-8859-14 gtkrc.cy \
&& ln -s gtkrc.iso-8859-14 gtkrc.ga \
&& ln -s gtkrc.iso-8859-15 gtkrc.et \
&& ln -s gtkrc.ka_GE.georgianacademy gtkrc.ka \
&& ln -s gtkrc.vi_VN.viscii gtkrc.vi_VN.viscii111 \
&& ln -s gtkrc.vi_VN.tcvn gtkrc.vi_VN.tcvn5712 \
&& ln -s gtkrc.vi_VN.tcvn5712 gtkrc.vi \
&& ln -s gtkrc.cp1251 gtkrc.be \
&& ln -s gtkrc.cp1251 gtkrc.bg
uninstall-local:
rm -f $(DESTDIR)$(datadir)/themes/Default/gtk-2.0/gtkrc
......@@ -621,7 +603,7 @@ test-debug: testgtk
$(SHELL) $$top_builddir/libtool --mode=execute gdb $$builddir/testgtk
EXTRA_DIST += @STRIP_BEGIN@ \
OLD_STAMP \
oldest-source-stamp \
testgtk.1 \
testgtkrc \
testgtkrc2 \
......
/* GTK - The GIMP Toolkit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
#ifndef GTK_TEXT_DISPLAY_H
#define GTK_TEXT_DISPLAY_H
......@@ -7,33 +32,31 @@
extern "C" {
#endif /* __cplusplus */
/*
A semi-public header intended for use by code that also
uses GtkTextLayout
*/
/* The drawable should be pre-initialized to your preferred
background. */
void gtk_text_layout_draw (GtkTextLayout *layout,
/* Widget to grab some style info from */
GtkWidget *widget,
/* Drawable to render to */
GdkDrawable *drawable,
/* Position of the drawable
in layout coordinates */
gint x_offset,
gint y_offset,
/* Region of the layout to
render. x,y must be inside
the drawable. */
gint x,
gint y,
gint width,
gint height);
/* A semi-public header intended for use by code that also
* uses GtkTextLayout
*/
/* The drawable should be pre-initialized to your preferred background.
* widget - Widget to grab some style info from
* drawable - Drawable to render to
* x_offset/y_offset - Position of the drawable in layout coordinates
* x/y/width/height - Region of the layout to render. x,y must be inside
* the drawable.
*/
void gtk_text_layout_draw (GtkTextLayout *layout,
GtkWidget *widget,
GdkDrawable *drawable,
gint x_offset,
gint y_offset,
gint x,
gint y,
gint width,
gint height);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif
#endif /* GTK_TEXT_DISPLAY_H */
/* GTK - The GIMP Toolkit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
#ifndef GTK_TEXT_LAYOUT_H
#define GTK_TEXT_LAYOUT_H
......@@ -28,24 +53,24 @@ typedef struct _GtkTextLineData GtkTextLineData;
#define GTK_IS_TEXT_LAYOUT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_LAYOUT))
#define GTK_TEXT_LAYOUT_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_LAYOUT, GtkTextLayoutClass))
typedef struct _GtkTextLayout GtkTextLayout;
typedef struct _GtkTextLayoutClass GtkTextLayoutClass;
typedef struct _GtkTextLineDisplay GtkTextLineDisplay;
typedef struct _GtkTextCursorDisplay GtkTextCursorDisplay;
typedef struct _GtkTextLayout GtkTextLayout;
typedef struct _GtkTextLayoutClass GtkTextLayoutClass;
typedef struct _GtkTextLineDisplay GtkTextLineDisplay;
typedef struct _GtkTextCursorDisplay GtkTextCursorDisplay;
typedef struct _GtkTextAttrAppearance GtkTextAttrAppearance;
struct _GtkTextLayout
{
GtkObject parent_instance;
/* width of the display area on-screen,
* i.e. pixels we should wrap to fit inside. */
gint screen_width;
/* width/height of the total logical area being layed out */
gint width;
gint height;
/* Pixel offsets from the left and from the top to be used when we
* draw; these allow us to create left/top margins. We don't need
* anything special for bottom/right margins, because those don't
......@@ -55,19 +80,19 @@ struct _GtkTextLayout
/* gint top_edge; */
GtkTextBuffer *buffer;
/* Default style used if no tags override it */
GtkTextAttributes *default_style;
/* Pango contexts used for creating layouts */
PangoContext *ltr_context;
PangoContext *rtl_context;
/* A cache of one style; this is used to ensure
* we don't constantly regenerate the style
* over long runs with the same style. */
GtkTextAttributes *one_style_cache;
/* A cache of one line display. Getting the same line
* many times in a row is the most common case.
*/
......@@ -75,7 +100,7 @@ struct _GtkTextLayout
/* Whether we are allowed to wrap right now */
gint wrap_loop_count;
/* Whether to show the insertion cursor */
guint cursor_visible : 1;
};
......@@ -83,42 +108,36 @@ struct _GtkTextLayout
struct _GtkTextLayoutClass
{
GtkObjectClass parent_class;
/* Some portion of the layout was invalidated
*/
void (* invalidated) (GtkTextLayout *layout);
void (*invalidated) (GtkTextLayout *layout);
/* A range of the layout changed appearance and possibly height
*/
void (* changed) (GtkTextLayout *layout,
gint y,
gint old_height,
gint new_height);
GtkTextLineData *(* wrap) (GtkTextLayout *layout,
GtkTextLine *line,
/* may be NULL */
GtkTextLineData *line_data);
void (* get_log_attrs) (GtkTextLayout *layout,
GtkTextLine *line,
PangoLogAttr **attrs,
gint *n_attrs);
void (* invalidate) (GtkTextLayout *layout,
const GtkTextIter *start,
const GtkTextIter *end);
void (* free_line_data) (GtkTextLayout *layout,
GtkTextLine *line,
GtkTextLineData *line_data);
void (*changed) (GtkTextLayout *layout,
gint y,
gint old_height,
gint new_height);
GtkTextLineData* (*wrap) (GtkTextLayout *layout,
GtkTextLine *line,
GtkTextLineData *line_data); /* may be NULL */
void (*get_log_attrs) (GtkTextLayout *layout,
GtkTextLine *line,
PangoLogAttr **attrs,
gint *n_attrs);
void (*invalidate) (GtkTextLayout *layout,
const GtkTextIter *start,
const GtkTextIter *end);
void (*free_line_data) (GtkTextLayout *layout,
GtkTextLine *line,
GtkTextLineData *line_data);
};
struct _GtkTextAttrAppearance
{
PangoAttribute attr;
GtkTextAppearance appearance;
};
struct _GtkTextCursorDisplay
{
gint x;
......@@ -127,15 +146,14 @@ struct _GtkTextCursorDisplay
guint is_strong : 1;
guint is_weak : 1;
};
struct _GtkTextLineDisplay
{
PangoLayout *layout;
GSList *cursors;
GSList *pixbufs;
GtkTextDirection direction;
gint width; /* Width of layout */
gint total_width; /* width - margins, if no width set on layout, if width set on layout, -1 */
gint height;
......@@ -144,16 +162,15 @@ struct _GtkTextLineDisplay
gint right_margin;
gint top_margin;
gint bottom_margin;
gboolean size_only;
GtkTextLine *line;
};
extern PangoAttrType gtk_text_attr_appearance_type;
GtkType gtk_text_layout_get_type (void) G_GNUC_CONST;
GtkTextLayout *gtk_text_layout_new (void);
GtkType gtk_text_layout_get_type (void) G_GNUC_CONST;
GtkTextLayout* gtk_text_layout_new (void);
void gtk_text_layout_set_buffer (GtkTextLayout *layout,
GtkTextBuffer *buffer);
void gtk_text_layout_set_default_style (GtkTextLayout *layout,
......@@ -164,10 +181,9 @@ void gtk_text_layout_set_contexts (GtkTextLayout *layout,
void gtk_text_layout_default_style_changed (GtkTextLayout *layout);
void gtk_text_layout_set_screen_width (GtkTextLayout *layout,
gint width);
void gtk_text_layout_set_cursor_visible (GtkTextLayout *layout,
gboolean cursor_visible);
gboolean gtk_text_layout_get_cursor_visible (GtkTextLayout *layout);
void gtk_text_layout_set_cursor_visible (GtkTextLayout *layout,
gboolean cursor_visible);
gboolean gtk_text_layout_get_cursor_visible (GtkTextLayout *layout);
/* Getting the size or the lines potentially results in a call to
* recompute, which is pretty massively expensive. Thus it should
......@@ -176,21 +192,19 @@ gboolean gtk_text_layout_get_cursor_visible (GtkTextLayout *layout);
* Long-term, we would really like to be able to do these without
* a full recompute so they may get cheaper over time.
*/
void gtk_text_layout_get_size (GtkTextLayout *layout,
gint *width,
gint *height);
GSList *gtk_text_layout_get_lines (GtkTextLayout *layout,
void gtk_text_layout_get_size (GtkTextLayout *layout,
gint *width,