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>
This commit is contained in:
Tim Janik 2000-10-26 05:50:36 +00:00 committed by Tim Janik
parent f12ddea328
commit 6700994c24
11 changed files with 359 additions and 219 deletions

View File

@ -1,3 +1,20 @@
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

View File

@ -1,3 +1,20 @@
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

View File

@ -1,3 +1,20 @@
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

View File

@ -1,3 +1,20 @@
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

View File

@ -1,3 +1,20 @@
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

View File

@ -1,3 +1,20 @@
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

View File

@ -1,3 +1,20 @@
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

View File

@ -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,43 +348,6 @@ gtk_c_sources = @STRIP_BEGIN@ \
fnmatch.h \
gdk-pixbuf-loader.c \
@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 don't get installed
gtk_built_sources = @STRIP_BEGIN@ \
stamp-gtk.defs \
stamp-gtktypebuiltins.h \
stamp-gtkmarshal.h \
gtktypebuiltins_vars.c \
gtktypebuiltins_ids.c \
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 \
@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
# their own .lo rules and don't get publically installed
gtk_extra_sources = @STRIP_BEGIN@ \
gtkcompat.h.in \
makeenums.pl \
makeenums.awk \
maketypes.awk \
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 \
@ -425,40 +371,53 @@ gdk_headers = @STRIP_BEGIN@ \
../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 \
stamp-gtktypebuiltins.h \
stamp-gtkmarshal.h \
gtktypebuiltins_vars.c \
gtktypebuiltins_ids.c \
gtktypebuiltins_evals.c \
gtkmarshal.c \
gtk.defs \
${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
# their own .lo rules and don't get publically installed
gtk_extra_sources = @STRIP_BEGIN@ \
gtkcompat.h.in \
makeenums.pl \
makeenums.awk \
maketypes.awk \
makeenums.h \
gtkargcollector.c \
gtk-boxed.defs \
gtkmarshal.list \
@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 \

View File

View File

@ -1,3 +1,28 @@
/* 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
*/
/* 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);
/* 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);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif
#endif /* GTK_TEXT_DISPLAY_H */

View File

@ -1,3 +1,28 @@
/* 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,
gint *height);
GSList* gtk_text_layout_get_lines (GtkTextLayout *layout,
/* [top_y, bottom_y) */
gint top_y,
gint bottom_y,
gint *first_line_y);
gint top_y,
gint bottom_y,
gint *first_line_y);
void gtk_text_layout_wrap_loop_start (GtkTextLayout *layout);
void gtk_text_layout_wrap_loop_end (GtkTextLayout *layout);
void gtk_text_layout_wrap_loop_start (GtkTextLayout *layout);
void gtk_text_layout_wrap_loop_end (GtkTextLayout *layout);
GtkTextLineDisplay *gtk_text_layout_get_line_display (GtkTextLayout *layout,
GtkTextLineDisplay* gtk_text_layout_get_line_display (GtkTextLayout *layout,
GtkTextLine *line,
gboolean size_only);
void gtk_text_layout_free_line_display (GtkTextLayout *layout,
@ -219,16 +233,16 @@ void gtk_text_layout_validate_yrange (GtkTextLayout *layout,
void gtk_text_layout_validate (GtkTextLayout *layout,
gint max_pixels);
/* This function should return the passed-in line data,
OR remove the existing line data from the line, and
return a NEW line data after adding it to the line.
That is, invariant after calling the callback is that
there should be exactly one line data for this view
stored on the btree line. */
GtkTextLineData *gtk_text_layout_wrap (GtkTextLayout *layout,
GtkTextLine *line,
/* may be NULL */
GtkTextLineData *line_data);
/* This function should return the passed-in line data,
* OR remove the existing line data from the line, and
* return a NEW line data after adding it to the line.
* That is, invariant after calling the callback is that
* there should be exactly one line data for this view
* stored on the btree line.
*/
GtkTextLineData* gtk_text_layout_wrap (GtkTextLayout *layout,
GtkTextLine *line,
GtkTextLineData *line_data); /* may be NULL */
void gtk_text_layout_get_log_attrs (GtkTextLayout *layout,
GtkTextLine *line,
PangoLogAttr **attrs,
@ -269,8 +283,10 @@ void gtk_text_layout_move_iter_visually (GtkTextLayout *layout,
void gtk_text_layout_spew (GtkTextLayout *layout);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif
#endif /* GTK_TEXT_LAYOUT_H */