Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 78653db2e4148c15abb94d33af2851c6 > files > 29

gts-devel-0.7.6-15.fc15.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Hierarchical surfaces</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="GTS Library Reference Manual"
HREF="book1.html"><LINK
REL="UP"
TITLE="Progressive and Hierarchical surfaces"
HREF="c15264.html"><LINK
REL="PREVIOUS"
TITLE="Hierarchical vertex split"
HREF="gts-hierarchical-vertex-split.html"><LINK
REL="NEXT"
TITLE="Graph and operations on graphs"
HREF="c17114.html"><STYLE
TYPE="text/css"
>.synopsis, .classsynopsis {
    background: #eeeeee;
    border: solid 1px #aaaaaa;
    padding: 0.5em;
}
.programlisting {
    background: #eeeeff;
    border: solid 1px #aaaaff;
    padding: 0.5em;
}
.variablelist {
    padding: 4px;
    margin-left: 3em;
}
.navigation {
    background: #ffeeee;
    border: solid 1px #ffaaaa;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
}
.navigation a {
    color: #770000;
}
.navigation a:visited {
    color: #550000;
}
.navigation .title {
    font-size: 200%;
}</STYLE
></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><TABLE
WIDTH="100%"
CLASS="navigation"
SUMMARY="Navigation header"
CELLPADDING="2"
CELLSPACING="2"
><TR
VALIGN="middle"
><TD
><A
ACCESSKEY="p"
HREF="gts-hierarchical-vertex-split.html"
><IMG
SRC="left.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Prev"></A
></TD
><TD
><A
ACCESSKEY="u"
HREF="c15264.html"
><IMG
SRC="up.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Up"></A
></TD
><TD
><A
ACCESSKEY="h"
HREF="book1.html"
><IMG
SRC="home.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Home"></A
></TD
><TH
WIDTH="100%"
align="center"
>GTS Library Reference Manual</TH
><TD
><A
ACCESSKEY="n"
HREF="c17114.html"
><IMG
SRC="right.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Next"></A
></TD
></TR
></TABLE
><H1
><A
NAME="GTS-HIERARCHICAL-SURFACES"
></A
>Hierarchical surfaces</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN16727"
></A
><H2
>Name</H2
>Hierarchical surfaces&nbsp;--&nbsp;extension of progressive surfaces allowing arbitrary sequences of vertex split or collapse.</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN16730"
></A
><H2
>Synopsis</H2
><PRE
CLASS="SYNOPSIS"
>&#13;#include &lt;gts.h&gt;


#define     <A
HREF="gts-hierarchical-surfaces.html#GTS-HSURFACE-CLASS:CAPS"
>GTS_HSURFACE_CLASS</A
>              (klass)
#define     <A
HREF="gts-hierarchical-surfaces.html#GTS-HSURFACE:CAPS"
>GTS_HSURFACE</A
>                    (obj)
#define     <A
HREF="gts-hierarchical-surfaces.html#GTS-IS-HSURFACE:CAPS"
>GTS_IS_HSURFACE</A
>                 (obj)
            <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
>GtsHSurfaceClass</A
>;
            <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
>;

<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
>GtsHSurfaceClass</A
>* <A
HREF="gts-hierarchical-surfaces.html#GTS-HSURFACE-CLASS"
>gts_hsurface_class</A
>        (void);
<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
>* <A
HREF="gts-hierarchical-surfaces.html#GTS-HSURFACE-NEW"
>gts_hsurface_new</A
>               (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
>GtsHSurfaceClass</A
> *klass,
                                             <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLITCLASS"
>GtsHSplitClass</A
> *hsplit_class,
                                             <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *psurface,
                                             <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
>GtsKeyFunc</A
> expand_key,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> expand_data,
                                             <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
>GtsKeyFunc</A
> collapse_key,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> collapse_data);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-hierarchical-surfaces.html#GTS-HSURFACE-TRAVERSE"
>gts_hsurface_traverse</A
>           (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
> *hsurface,
                                             <GTKDOCLINK
HREF="GTRAVERSETYPE"
>GTraverseType</GTKDOCLINK
> order,
                                             <GTKDOCLINK
HREF="GINT"
>gint</GTKDOCLINK
> depth,
                                             <A
HREF="gts-vertex-split.html#GTSSPLITTRAVERSEFUNC"
>GtsSplitTraverseFunc</A
> func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> data);
<GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       <A
HREF="gts-hierarchical-surfaces.html#GTS-HSURFACE-HEIGHT"
>gts_hsurface_height</A
>             (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
> *hsurface);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-hierarchical-surfaces.html#GTS-HSURFACE-FOREACH"
>gts_hsurface_foreach</A
>            (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
> *hsurface,
                                             <GTKDOCLINK
HREF="GTRAVERSETYPE"
>GTraverseType</GTKDOCLINK
> order,
                                             <A
HREF="gts-surfaces.html#GTSFUNC"
>GtsFunc</A
> func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> data);</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN16765"
></A
><H2
>Description</H2
><P
>Hierarchical surfaces are used to manage sequences of vertex splits or collapses which can be different from the initial sequence described by the progressive surface. In this way different branches of the vertex split tree can be collapsed or expanded resulting in a level of detail varying across different parts of the surface. This is the fundamental mechanism of view-dependent level of detail.</P
><P
>Hierarchical surfaces maintain two priority heaps one containing the next vertices (<A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
>) ready to be expanded, the other the next vertices ready to be collapsed. By updating the priorities for these vertices as the view point changes and collapsing or expanding the top ones until a given criterium is verified, the level of detail can be dynamically adapted.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN16771"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN16773"
></A
><H3
><A
NAME="GTS-HSURFACE-CLASS:CAPS"
></A
>GTS_HSURFACE_CLASS()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_HSURFACE_CLASS(klass)</PRE
><P
>Casts <CODE
CLASS="PARAMETER"
>klass</CODE
> to <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsHSurfaceClass</SPAN
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16784"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>klass</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a descendant of <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsHSurfaceClass</SPAN
></A
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16791"
></A
><H3
><A
NAME="GTS-HSURFACE:CAPS"
></A
>GTS_HSURFACE()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_HSURFACE(obj)</PRE
><P
>Casts <CODE
CLASS="PARAMETER"
>obj</CODE
> to <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
><SPAN
CLASS="TYPE"
>GtsHSurface</SPAN
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16802"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>obj</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a descendant of <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
><SPAN
CLASS="TYPE"
>GtsHSurface</SPAN
></A
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16809"
></A
><H3
><A
NAME="GTS-IS-HSURFACE:CAPS"
></A
>GTS_IS_HSURFACE()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_IS_HSURFACE(obj)</PRE
><P
>Evaluates to <TT
CLASS="LITERAL"
>TRUE</TT
> if <CODE
CLASS="PARAMETER"
>obj</CODE
> is a <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
><SPAN
CLASS="TYPE"
>GtsHSurface</SPAN
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16821"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>obj</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a pointer to test.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16826"
></A
><H3
><A
NAME="GTSHSURFACECLASS"
></A
>GtsHSurfaceClass</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef struct {
  GtsObjectClass parent_class;
} GtsHSurfaceClass;</PRE
><P
>The hierarchical surface class derived from <A
HREF="gts-object-class.html#GTSOBJECTCLASS"
><SPAN
CLASS="TYPE"
>GtsObjectClass</SPAN
></A
>.</P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16835"
></A
><H3
><A
NAME="GTSHSURFACE"
></A
>GtsHSurface</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef struct {
  GtsObject object;

  GtsSurface * s;
  GSList * roots;
  GtsEHeap * expandable;
  GtsEHeap * collapsable;
  GPtrArray * split;
  guint nvertex;
} GtsHSurface;</PRE
><P
>The hierarchical surface object.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16843"><SPAN
STYLE="white-space: nowrap"
><A
HREF="gts-object-class.html#GTSOBJECT"
>GtsObject</A
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>object</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The parent object.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16849"><SPAN
STYLE="white-space: nowrap"
><A
HREF="gts-surfaces.html#GTSSURFACE"
>GtsSurface</A
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>s</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The <A
HREF="gts-surfaces.html#GTSSURFACE"
><SPAN
CLASS="TYPE"
>GtsSurface</SPAN
></A
> being refined or coarsened.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16857"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GSLIST"
>GSList</GTKDOCLINK
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>roots</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Private field.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16863"><SPAN
STYLE="white-space: nowrap"
><A
HREF="gts-extended-binary-heaps.html#GTSEHEAP"
>GtsEHeap</A
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>expandable</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
><A
HREF="gts-extended-binary-heaps.html#GTSEHEAP"
><SPAN
CLASS="TYPE"
>GtsEHeap</SPAN
></A
> of the expandable <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> sorted by priority.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16873"><SPAN
STYLE="white-space: nowrap"
><A
HREF="gts-extended-binary-heaps.html#GTSEHEAP"
>GtsEHeap</A
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>collapsable</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
><A
HREF="gts-extended-binary-heaps.html#GTSEHEAP"
><SPAN
CLASS="TYPE"
>GtsEHeap</SPAN
></A
> of the collapsable <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> sorted by priority.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16883"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GPTRARRAY"
>GPtrArray</GTKDOCLINK
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>split</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Private field.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16889"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>nvertex</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Private field.&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16895"
></A
><H3
><A
NAME="GTS-HSURFACE-CLASS"
></A
>gts_hsurface_class ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
>GtsHSurfaceClass</A
>* gts_hsurface_class        (void);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16905"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsHSurfaceClass</SPAN
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16912"
></A
><H3
><A
NAME="GTS-HSURFACE-NEW"
></A
>gts_hsurface_new ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
>* gts_hsurface_new               (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
>GtsHSurfaceClass</A
> *klass,
                                             <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLITCLASS"
>GtsHSplitClass</A
> *hsplit_class,
                                             <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *psurface,
                                             <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
>GtsKeyFunc</A
> expand_key,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> expand_data,
                                             <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
>GtsKeyFunc</A
> collapse_key,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> collapse_data);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16929"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>klass</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsHSurfaceClass</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16936"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>hsplit_class</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLITCLASS"
><SPAN
CLASS="TYPE"
>GtsHSplitClass</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16943"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>psurface</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16950"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>expand_key</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
><SPAN
CLASS="TYPE"
>GtsKeyFunc</SPAN
></A
> used to order the priority heap of expandable 
<A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16959"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>expand_data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> data to be passed to <CODE
CLASS="PARAMETER"
>expand_key</CODE
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16965"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>collapse_key</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
><SPAN
CLASS="TYPE"
>GtsKeyFunc</SPAN
></A
> used to order the priority heap of collapsable
<A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16974"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>collapse_data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> data to be passed to <CODE
CLASS="PARAMETER"
>collapsed_key</CODE
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16980"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a new <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
><SPAN
CLASS="TYPE"
>GtsHSurface</SPAN
></A
>, hierarchical extension of <CODE
CLASS="PARAMETER"
>psurface</CODE
>
and using <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> of class <CODE
CLASS="PARAMETER"
>hsplit_class</CODE
>. Note that <CODE
CLASS="PARAMETER"
>psurface</CODE
> is
destroyed in the process.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16992"
></A
><H3
><A
NAME="GTS-HSURFACE-TRAVERSE"
></A
>gts_hsurface_traverse ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_hsurface_traverse           (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
> *hsurface,
                                             <GTKDOCLINK
HREF="GTRAVERSETYPE"
>GTraverseType</GTKDOCLINK
> order,
                                             <GTKDOCLINK
HREF="GINT"
>gint</GTKDOCLINK
> depth,
                                             <A
HREF="gts-vertex-split.html#GTSSPLITTRAVERSEFUNC"
>GtsSplitTraverseFunc</A
> func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> data);</PRE
><P
>Traverses a hierarchical surface starting from its roots. It calls
the given function for each <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> visited. 
See also <A
HREF="gts-vertex-split.html#GTS-SPLIT-TRAVERSE"
><CODE
CLASS="FUNCTION"
>gts_split_traverse()</CODE
></A
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17011"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>hsurface</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
><SPAN
CLASS="TYPE"
>GtsHSurface</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17018"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>order</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the order in which nodes are visited - G_PRE_ORDER or G_POST_ORDER.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17023"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>depth</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the maximum depth of the traversal. Nodes below this depth
will not be visited. If max_depth is -1 all nodes in the tree are
visited. If depth is 1, only the root is visited. If depth is 2,
the root and its children are visited. And so on.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17028"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>func</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the function to call for each visited <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17035"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> user data to pass to the function.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN17040"
></A
><H3
><A
NAME="GTS-HSURFACE-HEIGHT"
></A
>gts_hsurface_height ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       gts_hsurface_height             (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
> *hsurface);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17051"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>hsurface</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
><SPAN
CLASS="TYPE"
>GtsHSurface</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17058"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the maximum height of the tree described by <CODE
CLASS="PARAMETER"
>hsurface</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN17064"
></A
><H3
><A
NAME="GTS-HSURFACE-FOREACH"
></A
>gts_hsurface_foreach ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_hsurface_foreach            (<A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
>GtsHSurface</A
> *hsurface,
                                             <GTKDOCLINK
HREF="GTRAVERSETYPE"
>GTraverseType</GTKDOCLINK
> order,
                                             <A
HREF="gts-surfaces.html#GTSFUNC"
>GtsFunc</A
> func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> data);</PRE
><P
>Starts by expanding all the <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> of <CODE
CLASS="PARAMETER"
>hsurface</CODE
>. If <CODE
CLASS="PARAMETER"
>order</CODE
> is
G_PRE_ORDER, calls <CODE
CLASS="PARAMETER"
>func</CODE
> for each <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> and collapses it. If
order is G_POST_ORDER, collapses each <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> first and then
calls <CODE
CLASS="PARAMETER"
>func</CODE
>. The traversal can be halted at any point by returning
TRUE from func.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17088"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>hsurface</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-hierarchical-surfaces.html#GTSHSURFACE"
><SPAN
CLASS="TYPE"
>GtsHSurface</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17095"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>order</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the order in which <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
> are visited - G_PRE_ORDER or 
G_POST_ORDER.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17102"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>func</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the function to call for each visited <A
HREF="gts-hierarchical-vertex-split.html#GTSHSPLIT"
><SPAN
CLASS="TYPE"
>GtsHSplit</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN17109"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> user data to pass to the function.</P
></TD
></TR
></TBODY
></TABLE
></DIV
></DIV
><TABLE
CLASS="navigation"
WIDTH="100%"
SUMMARY="Navigation footer"
CELLPADDING="2"
CELLSPACING="2"
><TR
VALIGN="middle"
><TD
ALIGN="left"
><A
ACCESSKEY="p"
HREF="gts-hierarchical-vertex-split.html"
><B
>&lt;&lt;&lt;&nbsp;Hierarchical vertex split</B
></A
></TD
><TD
ALIGN="right"
><A
ACCESSKEY="n"
HREF="c17114.html"
><B
>Graph and operations on graphs&nbsp;&gt;&gt;&gt;</B
></A
></TD
></TR
></TABLE
></BODY
></HTML
>