Sophie

Sophie

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

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
>Progressive 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="Vertex split"
HREF="gts-vertex-split.html"><LINK
REL="NEXT"
TITLE="Hierarchical vertex split"
HREF="gts-hierarchical-vertex-split.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-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="gts-hierarchical-vertex-split.html"
><IMG
SRC="right.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Next"></A
></TD
></TR
></TABLE
><H1
><A
NAME="GTS-PROGRESSIVE-SURFACES"
></A
>Progressive surfaces</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN15757"
></A
><H2
>Name</H2
>Progressive surfaces&nbsp;--&nbsp;continuous level-of-detail for surfaces.</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN15760"
></A
><H2
>Synopsis</H2
><PRE
CLASS="SYNOPSIS"
>&#13;#include &lt;gts.h&gt;


#define     <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-CLASS:CAPS"
>GTS_PSURFACE_CLASS</A
>              (klass)
#define     <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE:CAPS"
>GTS_PSURFACE</A
>                    (obj)
#define     <A
HREF="gts-progressive-surfaces.html#GTS-IS-PSURFACE:CAPS"
>GTS_IS_PSURFACE</A
>                 (obj)
#define     <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-IS-CLOSED:CAPS"
>GTS_PSURFACE_IS_CLOSED</A
>          (ps)
            <A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
>GtsPSurfaceClass</A
>;
            <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
>;

<A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
>GtsPSurfaceClass</A
>* <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-CLASS"
>gts_psurface_class</A
>        (void);
<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
>* <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-NEW"
>gts_psurface_new</A
>               (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
>GtsPSurfaceClass</A
> *klass,
                                             <A
HREF="gts-surfaces.html#GTSSURFACE"
>GtsSurface</A
> *surface,
                                             <A
HREF="gts-vertex-split.html#GTSSPLITCLASS"
>GtsSplitClass</A
> *split_class,
                                             <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
>GtsKeyFunc</A
> cost_func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> cost_data,
                                             <A
HREF="gts-surface-simplification-and-refinement.html#GTSCOARSENFUNC"
>GtsCoarsenFunc</A
> coarsen_func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> coarsen_data,
                                             <A
HREF="gts-surface-simplification-and-refinement.html#GTSSTOPFUNC"
>GtsStopFunc</A
> stop_func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> stop_data,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> minangle);
<A
HREF="gts-vertex-split.html#GTSSPLIT"
>GtsSplit</A
>*   <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-ADD-VERTEX"
>gts_psurface_add_vertex</A
>         (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);
<A
HREF="gts-vertex-split.html#GTSSPLIT"
>GtsSplit</A
>*   <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-REMOVE-VERTEX"
>gts_psurface_remove_vertex</A
>      (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-SET-VERTEX-NUMBER"
>gts_psurface_set_vertex_number</A
>  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
> n);
<GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-GET-VERTEX-NUMBER"
>gts_psurface_get_vertex_number</A
>  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);
<GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-MIN-VERTEX-NUMBER"
>gts_psurface_min_vertex_number</A
>  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);
<GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-MAX-VERTEX-NUMBER"
>gts_psurface_max_vertex_number</A
>  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-FOREACH-VERTEX"
>gts_psurface_foreach_vertex</A
>     (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <A
HREF="gts-surfaces.html#GTSFUNC"
>GtsFunc</A
> func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> data);
<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
>* <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-OPEN"
>gts_psurface_open</A
>              (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
>GtsPSurfaceClass</A
> *klass,
                                             <A
HREF="gts-surfaces.html#GTSSURFACE"
>GtsSurface</A
> *s,
                                             <A
HREF="gts-vertex-split.html#GTSSPLITCLASS"
>GtsSplitClass</A
> *split_class,
                                             <A
HREF="gts-miscellaneous-macros-and-functions.html#GTSFILE"
>GtsFile</A
> *f);
<A
HREF="gts-vertex-split.html#GTSSPLIT"
>GtsSplit</A
>*   <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-READ-VERTEX"
>gts_psurface_read_vertex</A
>        (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <A
HREF="gts-miscellaneous-macros-and-functions.html#GTSFILE"
>GtsFile</A
> *fp);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-CLOSE"
>gts_psurface_close</A
>              (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-WRITE"
>gts_psurface_write</A
>              (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN15824"
></A
><H2
>Description</H2
><P
>Progressive surfaces allow you to control precisely and continuously the level of detail of a <A
HREF="gts-surfaces.html#GTSSURFACE"
><SPAN
CLASS="TYPE"
>GtsSurface</SPAN
></A
>. They are built off-line by storing the sequence of edge collapses performed during surface simplification (see <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-NEW"
><CODE
CLASS="FUNCTION"
>gts_psurface_new()</CODE
></A
>). Fast traversal of the pre-built sequence allow on-line selection of the required level of detail.</P
><P
>Using the <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-WRITE"
><CODE
CLASS="FUNCTION"
>gts_psurface_write()</CODE
></A
> function a text representation of a progressive surface can be written to a file, pipe or socket. This text representation allows the progressive transmission of a surface, starting with the coarsest representation and progressively refining it as data is read or received (see <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-OPEN"
><CODE
CLASS="FUNCTION"
>gts_psurface_open()</CODE
></A
>, <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-READ-VERTEX"
><CODE
CLASS="FUNCTION"
>gts_psurface_read_vertex()</CODE
></A
> and <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-CLOSE"
><CODE
CLASS="FUNCTION"
>gts_psurface_close()</CODE
></A
> for details).</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN15840"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN15842"
></A
><H3
><A
NAME="GTS-PSURFACE-CLASS:CAPS"
></A
>GTS_PSURFACE_CLASS()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_PSURFACE_CLASS(klass)</PRE
><P
>Casts <CODE
CLASS="PARAMETER"
>klass</CODE
> to <A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsPSurfaceClass</SPAN
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15853"><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-progressive-surfaces.html#GTSPSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsPSurfaceClass</SPAN
></A
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN15860"
></A
><H3
><A
NAME="GTS-PSURFACE:CAPS"
></A
>GTS_PSURFACE()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_PSURFACE(obj)</PRE
><P
>Casts <CODE
CLASS="PARAMETER"
>obj</CODE
> to <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15871"><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-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN15878"
></A
><H3
><A
NAME="GTS-IS-PSURFACE:CAPS"
></A
>GTS_IS_PSURFACE()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_IS_PSURFACE(obj)</PRE
><P
>Evaluates to <TT
CLASS="LITERAL"
>TRUE</TT
> if <CODE
CLASS="PARAMETER"
>obj</CODE
> is a <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
>, <TT
CLASS="LITERAL"
>FALSE</TT
> otherwise.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15891"><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="AEN15896"
></A
><H3
><A
NAME="GTS-PSURFACE-IS-CLOSED:CAPS"
></A
>GTS_PSURFACE_IS_CLOSED()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define GTS_PSURFACE_IS_CLOSED(ps)  (!(ps)-&gt;vertices)</PRE
><P
>Evaluates to <TT
CLASS="LITERAL"
>TRUE</TT
> if <CODE
CLASS="PARAMETER"
>ps</CODE
> has not been created with <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-OPEN"
><CODE
CLASS="FUNCTION"
>gts_psurface_open()</CODE
></A
> or if
it has been closed using <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-CLOSE"
><CODE
CLASS="FUNCTION"
>gts_psurface_close()</CODE
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15910"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN15917"
></A
><H3
><A
NAME="GTSPSURFACECLASS"
></A
>GtsPSurfaceClass</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef struct {
  GtsObjectClass parent_class;
} GtsPSurfaceClass;</PRE
><P
>The progressive 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="AEN15926"
></A
><H3
><A
NAME="GTSPSURFACE"
></A
>GtsPSurface</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef struct {
  GtsObject object;

  GtsSurface * s;
  GPtrArray * split;
  GtsSplitClass * split_class;
  guint pos, min;

  GPtrArray * vertices;
  GPtrArray * faces;
} GtsPSurface;</PRE
><P
>The progressive surface object.

 derived from <A
HREF="gts-object-class.html#GTSOBJECT"
><SPAN
CLASS="TYPE"
>GtsObject</SPAN
></A
>. The field <CODE
CLASS="PARAMETER"
>s</CODE
> is the <A
HREF="gts-surfaces.html#GTSSURFACE"
><SPAN
CLASS="TYPE"
>GtsSurface</SPAN
></A
> being refined or coarsened by operations on the progressive surface. All the other fields must be considered private and accessed only through the following functions.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15939"><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="AEN15945"><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 by operations on the progressive surface.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15953"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GPTRARRAY"
>GPtrArray</GTKDOCLINK
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>split</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
></P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15959"><SPAN
STYLE="white-space: nowrap"
><A
HREF="gts-vertex-split.html#GTSSPLITCLASS"
>GtsSplitClass</A
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>split_class</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
></P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15965"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>pos</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
></P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15971"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>min</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
></P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15977"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GPTRARRAY"
>GPtrArray</GTKDOCLINK
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>vertices</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
></P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN15983"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GPTRARRAY"
>GPtrArray</GTKDOCLINK
>&nbsp;*<CODE
CLASS="STRUCTFIELD"
>faces</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
></P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN15989"
></A
><H3
><A
NAME="GTS-PSURFACE-CLASS"
></A
>gts_psurface_class ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
>GtsPSurfaceClass</A
>* gts_psurface_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="AEN15999"><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-progressive-surfaces.html#GTSPSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsPSurfaceClass</SPAN
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16006"
></A
><H3
><A
NAME="GTS-PSURFACE-NEW"
></A
>gts_psurface_new ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
>* gts_psurface_new               (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
>GtsPSurfaceClass</A
> *klass,
                                             <A
HREF="gts-surfaces.html#GTSSURFACE"
>GtsSurface</A
> *surface,
                                             <A
HREF="gts-vertex-split.html#GTSSPLITCLASS"
>GtsSplitClass</A
> *split_class,
                                             <A
HREF="gts-extended-binary-heaps.html#GTSKEYFUNC"
>GtsKeyFunc</A
> cost_func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> cost_data,
                                             <A
HREF="gts-surface-simplification-and-refinement.html#GTSCOARSENFUNC"
>GtsCoarsenFunc</A
> coarsen_func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> coarsen_data,
                                             <A
HREF="gts-surface-simplification-and-refinement.html#GTSSTOPFUNC"
>GtsStopFunc</A
> stop_func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> stop_data,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> minangle);</PRE
><P
>This function works in exactly the same way as the
<A
HREF="gts-surface-simplification-and-refinement.html#GTS-SURFACE-COARSEN"
><CODE
CLASS="FUNCTION"
>gts_surface_coarsen()</CODE
></A
> function, except that the history of edge
collapse is saved in an array of <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> objects. This allows for
dynamic continuous multiresolution control of the input <CODE
CLASS="PARAMETER"
>surface</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16031"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>klass</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsPSurfaceClass</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16038"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>surface</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-surfaces.html#GTSSURFACE"
><SPAN
CLASS="TYPE"
>GtsSurface</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16045"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>split_class</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vertex-split.html#GTSSPLITCLASS"
><SPAN
CLASS="TYPE"
>GtsSplitClass</SPAN
></A
> to use for the new progressive surface.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16052"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>cost_func</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> cost function for the edge collapse algorithm.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16057"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>cost_data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> data to pass to <CODE
CLASS="PARAMETER"
>cost_func</CODE
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16063"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>coarsen_func</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the function returning the vertex replacement for the edge 
collapse.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16068"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>coarsen_data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> data to pass to <CODE
CLASS="PARAMETER"
>coarsen_func</CODE
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16074"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>stop_func</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the function to call to decide whether to stop the coarsening
process.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16079"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>stop_data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> data to pass to <CODE
CLASS="PARAMETER"
>stop_func</CODE
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16085"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>minangle</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the minimum angle allowable between two neighboring triangles. 
This is used to avoid introducing folds in the mesh during simplification.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16090"><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 progressive surface.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16095"
></A
><H3
><A
NAME="GTS-PSURFACE-ADD-VERTEX"
></A
>gts_psurface_add_vertex ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vertex-split.html#GTSSPLIT"
>GtsSplit</A
>*   gts_psurface_add_vertex         (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);</PRE
><P
>Adds a vertex to the progressive surface <CODE
CLASS="PARAMETER"
>ps</CODE
> by expanding the next
available <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16109"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16116"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the expanded <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
> if all the <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> have already
been expanded.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16126"
></A
><H3
><A
NAME="GTS-PSURFACE-REMOVE-VERTEX"
></A
>gts_psurface_remove_vertex ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vertex-split.html#GTSSPLIT"
>GtsSplit</A
>*   gts_psurface_remove_vertex      (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);</PRE
><P
>Removes one vertex from the progressive surface <CODE
CLASS="PARAMETER"
>ps</CODE
> by collapsing the first
available <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16140"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16147"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the collapsed <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
> if all the <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> have already
been collapsed.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16157"
></A
><H3
><A
NAME="GTS-PSURFACE-SET-VERTEX-NUMBER"
></A
>gts_psurface_set_vertex_number ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_psurface_set_vertex_number  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
> n);</PRE
><P
>Performs the required number of collapses or expansions to set the number
of vertices of <CODE
CLASS="PARAMETER"
>ps</CODE
> to <CODE
CLASS="PARAMETER"
>n</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16171"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16178"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>n</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a number of vertices.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16183"
></A
><H3
><A
NAME="GTS-PSURFACE-GET-VERTEX-NUMBER"
></A
>gts_psurface_get_vertex_number ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       gts_psurface_get_vertex_number  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);</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="AEN16194"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16201"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the current number of vertices of <CODE
CLASS="PARAMETER"
>ps</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16207"
></A
><H3
><A
NAME="GTS-PSURFACE-MIN-VERTEX-NUMBER"
></A
>gts_psurface_min_vertex_number ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       gts_psurface_min_vertex_number  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);</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="AEN16218"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16225"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the minimum number of vertices of <CODE
CLASS="PARAMETER"
>ps</CODE
> i.e. the number of vertices
if all the <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> were collapsed.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16233"
></A
><H3
><A
NAME="GTS-PSURFACE-MAX-VERTEX-NUMBER"
></A
>gts_psurface_max_vertex_number ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       gts_psurface_max_vertex_number  (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);</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="AEN16244"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16251"><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 number of vertices of <CODE
CLASS="PARAMETER"
>ps</CODE
> i.e. the number of vertices
if all the <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> were expanded.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16259"
></A
><H3
><A
NAME="GTS-PSURFACE-FOREACH-VERTEX"
></A
>gts_psurface_foreach_vertex ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_psurface_foreach_vertex     (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <A
HREF="gts-surfaces.html#GTSFUNC"
>GtsFunc</A
> func,
                                             <GTKDOCLINK
HREF="GPOINTER"
>gpointer</GTKDOCLINK
> data);</PRE
><P
>Calls <CODE
CLASS="PARAMETER"
>func</CODE
> for each (potential) vertex of <CODE
CLASS="PARAMETER"
>ps</CODE
>, whether actually used
or not. The vertices are called in the order they were created during the
edge collapse operation.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16274"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16281"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>func</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a function to call for each vertex of <CODE
CLASS="PARAMETER"
>ps</CODE
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16287"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>data</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> data to be passed to <CODE
CLASS="PARAMETER"
>func</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16293"
></A
><H3
><A
NAME="GTS-PSURFACE-OPEN"
></A
>gts_psurface_open ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
>* gts_psurface_open              (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
>GtsPSurfaceClass</A
> *klass,
                                             <A
HREF="gts-surfaces.html#GTSSURFACE"
>GtsSurface</A
> *s,
                                             <A
HREF="gts-vertex-split.html#GTSSPLITCLASS"
>GtsSplitClass</A
> *split_class,
                                             <A
HREF="gts-miscellaneous-macros-and-functions.html#GTSFILE"
>GtsFile</A
> *f);</PRE
><P
>Creates a new <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
> prepared for input from the file <CODE
CLASS="PARAMETER"
>f</CODE
> 
containing a valid GTS representation of a progressive surface. The initial
shape of the progressive surface is loaded into <CODE
CLASS="PARAMETER"
>s</CODE
>.</P
><P
>Before being usable as such this progressive surface must be closed using
<A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-CLOSE"
><CODE
CLASS="FUNCTION"
>gts_psurface_close()</CODE
></A
>. While open however, the functions
<A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-GET-VERTEX-NUMBER"
><CODE
CLASS="FUNCTION"
>gts_psurface_get_vertex_number()</CODE
></A
>, <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-MIN-VERTEX-NUMBER"
><CODE
CLASS="FUNCTION"
>gts_psurface_min_vertex_number()</CODE
></A
> and
<A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-MAX-VERTEX-NUMBER"
><CODE
CLASS="FUNCTION"
>gts_psurface_max_vertex_number()</CODE
></A
> can still be used.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16320"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>klass</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-progressive-surfaces.html#GTSPSURFACECLASS"
><SPAN
CLASS="TYPE"
>GtsPSurfaceClass</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16327"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>s</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-surfaces.html#GTSSURFACE"
><SPAN
CLASS="TYPE"
>GtsSurface</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16334"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>split_class</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vertex-split.html#GTSSPLITCLASS"
><SPAN
CLASS="TYPE"
>GtsSplitClass</SPAN
></A
> to use for the <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16343"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>f</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-miscellaneous-macros-and-functions.html#GTSFILE"
><SPAN
CLASS="TYPE"
>GtsFile</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16350"><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-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
> if there was a format error while
reading the file, in which case <CODE
CLASS="PARAMETER"
>f</CODE
> contains information about the error.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16359"
></A
><H3
><A
NAME="GTS-PSURFACE-READ-VERTEX"
></A
>gts_psurface_read_vertex ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vertex-split.html#GTSSPLIT"
>GtsSplit</A
>*   gts_psurface_read_vertex        (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <A
HREF="gts-miscellaneous-macros-and-functions.html#GTSFILE"
>GtsFile</A
> *fp);</PRE
><P
>Reads in one vertex split operation from <CODE
CLASS="PARAMETER"
>fp</CODE
> and performs the expansion.</P
><P
>If an error occurs while reading the file, the <CODE
CLASS="PARAMETER"
>error</CODE
> field of <CODE
CLASS="PARAMETER"
>fp</CODE
> is set.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16375"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
> prealably created with <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-OPEN"
><CODE
CLASS="FUNCTION"
>gts_psurface_open()</CODE
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16384"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>fp</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-miscellaneous-macros-and-functions.html#GTSFILE"
><SPAN
CLASS="TYPE"
>GtsFile</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16391"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the newly created <A
HREF="gts-vertex-split.html#GTSSPLIT"
><SPAN
CLASS="TYPE"
>GtsSplit</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
> if no vertex split could be
read from <CODE
CLASS="PARAMETER"
>fp</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16400"
></A
><H3
><A
NAME="GTS-PSURFACE-CLOSE"
></A
>gts_psurface_close ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_psurface_close              (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps);</PRE
><P
>Closes a progressive surface.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16411"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
><SPAN
CLASS="TYPE"
>GtsPSurface</SPAN
></A
> prealably created with <A
HREF="gts-progressive-surfaces.html#GTS-PSURFACE-OPEN"
><CODE
CLASS="FUNCTION"
>gts_psurface_open()</CODE
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN16420"
></A
><H3
><A
NAME="GTS-PSURFACE-WRITE"
></A
>gts_psurface_write ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_psurface_write              (<A
HREF="gts-progressive-surfaces.html#GTSPSURFACE"
>GtsPSurface</A
> *ps,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);</PRE
><P
>Writes to <CODE
CLASS="PARAMETER"
>fptr</CODE
> a GTS progressive surface description.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN16433"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>ps</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="AEN16440"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>fptr</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a file pointer.</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-vertex-split.html"
><B
>&lt;&lt;&lt;&nbsp;Vertex split</B
></A
></TD
><TD
ALIGN="right"
><A
ACCESSKEY="n"
HREF="gts-hierarchical-vertex-split.html"
><B
>Hierarchical vertex split&nbsp;&gt;&gt;&gt;</B
></A
></TD
></TR
></TABLE
></BODY
></HTML
>