1 /*! @header QuesaStyle.h
2         Declares the Quesa style objects.
3  */
4 /*  NAME:
5         QuesaStyle.h
6 
7     DESCRIPTION:
8         Quesa public header.
9 
10     COPYRIGHT:
11         Copyright (c) 1999-2004, Quesa Developers. All rights reserved.
12 
13         For the current release of Quesa, please see:
14 
15             <http://www.quesa.org/>
16 
17         Redistribution and use in source and binary forms, with or without
18         modification, are permitted provided that the following conditions
19         are met:
20 
21             o Redistributions of source code must retain the above copyright
22               notice, this list of conditions and the following disclaimer.
23 
24             o Redistributions in binary form must reproduce the above
25               copyright notice, this list of conditions and the following
26               disclaimer in the documentation and/or other materials provided
27               with the distribution.
28 
29             o Neither the name of Quesa nor the names of its contributors
30               may be used to endorse or promote products derived from this
31               software without specific prior written permission.
32 
33         THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34         "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35         LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
36         A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
37         OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
38         SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
39         TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
40         PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
41         LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
42         NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
43         SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44     ___________________________________________________________________________
45 */
46 #ifndef QUESA_STYLE_HDR
47 #define QUESA_STYLE_HDR
48 //=============================================================================
49 //      Include files
50 //-----------------------------------------------------------------------------
51 #include "Quesa.h"
52 
53 // Disable QD3D header
54 #if defined(__QD3DSTYLE__)
55 #error
56 #endif
57 
58 #define __QD3DSTYLE__
59 
60 
61 
62 
63 
64 //=============================================================================
65 //      C++ preamble
66 //-----------------------------------------------------------------------------
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
71 
72 
73 
74 
75 //=============================================================================
76 //      Constants
77 //-----------------------------------------------------------------------------
78 /*!
79  *  @enum
80  *      TQ3SubdivisionMethod
81  *  @discussion
82  *      Subdivision methods.
83  *
84  *  @constant kQ3SubdivisionMethodConstant      Surfaces are divided into the specified
85  *                                              number of segments.
86  *  @constant kQ3SubdivisionMethodWorldSpace    Surfaces are divided into segments smaller
87  *                                              than the specified size in world-space.
88  *  @constant kQ3SubdivisionMethodScreenSpace   Surfaces are divided into segments smaller
89  *                                              than the specified size in pixels.
90  */
91 typedef enum TQ3SubdivisionMethod {
92     kQ3SubdivisionMethodConstant                = 0,
93     kQ3SubdivisionMethodWorldSpace              = 1,
94     kQ3SubdivisionMethodScreenSpace             = 2,
95     kQ3SubdivisionMethodSize32                  = 0xFFFFFFFF
96 } TQ3SubdivisionMethod;
97 
98 
99 /*!
100  *  @enum
101  *      TQ3PickPartsMasks
102  *  @discussion
103  *      Indicates the kind of objects placed in a hit list.
104  *
105  *  @constant kQ3PickPartsObject                The hit list contains whole objects.
106  *  @constant kQ3PickPartsMaskFace              The hit list contains faces.
107  *  @constant kQ3PickPartsMaskEdge              The hit list contains edges.
108  *  @constant kQ3PickPartsMaskVertex            The hit list contains vertices.
109  */
110 typedef enum TQ3PickPartsMasks {
111     kQ3PickPartsObject                          = 0,
112     kQ3PickPartsMaskFace                        = (1 << 0),
113     kQ3PickPartsMaskEdge                        = (1 << 1),
114     kQ3PickPartsMaskVertex                      = (1 << 2),
115     kQ3PickPartsMaskSize32                      = 0xFFFFFFFF
116 } TQ3PickPartsMasks;
117 
118 
119 /*!
120  *  @enum
121  *      TQ3FillStyle
122  *  @discussion
123  *      Fill styles.
124  *
125  *  @constant kQ3FillStyleFilled                Shapes are rendered as filled surfaces.
126  *  @constant kQ3FillStyleEdges                 Shapes are rendered as sets of lines.
127  *  @constant kQ3FillStylePoints                Shapes are rendered as sets of points.
128  */
129 typedef enum TQ3FillStyle {
130     kQ3FillStyleFilled                          = 0,
131     kQ3FillStyleEdges                           = 1,
132     kQ3FillStylePoints                          = 2,
133     kQ3FillStyleSize32                          = 0xFFFFFFFF
134 } TQ3FillStyle;
135 
136 
137 /*!
138  *  @enum
139  *      TQ3BackfacingStyle
140  *  @discussion
141  *      Backfacing styles.
142  *
143  *  @constant kQ3BackfacingStyleBoth            Both backfacing and front facing surfaces
144  *                                              are rendered.
145  *  @constant kQ3BackfacingStyleRemove          Backfacing surfaces are removed before rendering.
146  *  @constant kQ3BackfacingStyleFlip            Both backfacing and front facing surfaces are
147  *                                              rendered, and the surface normals of backfacing
148  *                                              surfaces are inverted before rendering.
149  */
150 typedef enum TQ3BackfacingStyle {
151     kQ3BackfacingStyleBoth                      = 0,
152     kQ3BackfacingStyleRemove                    = 1,
153     kQ3BackfacingStyleFlip                      = 2,
154     kQ3BackfacingStyleSize32                    = 0xFFFFFFFF
155 } TQ3BackfacingStyle;
156 
157 
158 /*!
159  *  @enum
160  *      TQ3InterpolationStyle
161  *  @discussion
162  *      Interpolation styles.
163  *
164  *  @constant kQ3InterpolationStyleNone         Faces are rendered with a uniform illumination.
165  *  @constant kQ3InterpolationStyleVertex       Individual vertices are shaded, and their values
166  *                                              are interpolated across each face.
167  *  @constant kQ3InterpolationStylePixel        Individual pixels are shaded. Is not typically
168  *                                              supported by interactive renderers.
169  */
170 typedef enum TQ3InterpolationStyle {
171     kQ3InterpolationStyleNone                   = 0,
172     kQ3InterpolationStyleVertex                 = 1,
173     kQ3InterpolationStylePixel                  = 2,
174     kQ3InterpolationSize32                      = 0xFFFFFFFF
175 } TQ3InterpolationStyle;
176 
177 
178 /*!
179  *  @enum
180  *      TQ3OrientationStyle
181  *  @discussion
182  *      Defines the "front facing" side of polygons.
183  *
184  *  @constant kQ3OrientationStyleCounterClockwise   The front face is defined as CCW order.
185  *  @constant kQ3OrientationStyleClockwise          The front face is defined as CW order.
186  */
187 typedef enum TQ3OrientationStyle {
188     kQ3OrientationStyleCounterClockwise         = 0,
189     kQ3OrientationStyleClockwise                = 1,
190     kQ3OrientationStyleSize32                   = 0xFFFFFFFF
191 } TQ3OrientationStyle;
192 
193 
194 /*!
195  *  @enum
196  *      TQ3AntiAliasModeMasks
197  *  @discussion
198  *      Anti-alias style selectors.
199  *
200  *  @constant kQ3AntiAliasModeMaskEdges         Apply anti-aliasing to wireframe objects.
201  *  @constant kQ3AntiAliasModeMaskFilled        Apply anti-aliasing to filled objects.
202  *  @constant kQ3AntiAliasModeMaskFullScreen    Apply global anti-aliasing (e.g., FSAA).
203  *                                              <em>This feature is not available in QD3D.</em>
204  */
205 typedef enum TQ3AntiAliasModeMasks {
206     kQ3AntiAliasModeMaskEdges                   = (1 << 0),
207     kQ3AntiAliasModeMaskFilled                  = (1 << 1),
208 #if QUESA_ALLOW_QD3D_EXTENSIONS
209     kQ3AntiAliasModeMaskFullScreen              = (1 << 2),
210 #endif // QUESA_ALLOW_QD3D_EXTENSIONS
211     kQ3AntiAliasModeSize32                      = 0xFFFFFFFF
212 } TQ3AntiAliasModeMasks;
213 
214 
215 /*!
216  *  @enum
217  *      TQ3FogMode
218  *  @discussion
219  *      Indicates how fog increases in density with distance.
220  *
221  *		Quesa's interactive renderer does not currently implement alpha fog.
222  *
223  *  @constant kQ3FogModeLinear                  Fog == (End - z) / (End - Start)
224  *  @constant kQ3FogModeExponential             Fog == exp(-Density * z)
225  *  @constant kQ3FogModeExponentialSquared      Fog == exp(-Density * z * Density * z).
226  *  @constant kQ3FogModeAlpha                   Fog == Vertex Alpha
227  */
228 typedef enum TQ3FogMode {
229     kQ3FogModeLinear                            = 0,
230     kQ3FogModeExponential                       = 1,
231     kQ3FogModeExponentialSquared                = 2,
232     kQ3FogModeAlpha                             = 3,
233     kQ3FogModeSize32                            = 0xFFFFFFFF
234 } TQ3FogMode;
235 
236 
237 
238 
239 
240 //=============================================================================
241 //      Types
242 //-----------------------------------------------------------------------------
243 /*!
244  *  @struct
245  *      TQ3SubdivisionStyleData
246  *  @discussion
247  *      Subdivision style data.
248  *
249  *      The c1 parameter is used as the "size" for all subdivision methods. Its
250  *      meaning and units depends on the subdivision method.
251  *
252  *      The c2 parameter is used as an additional parameter for surfaces by the
253  *      kQ3SubdivisionMethodConstant method, to allow control over subdivision
254  *      in both horizontal and vertical dimensions.
255  *
256  *  @field method           The subdivision method.
257  *  @field c1               The first parameter for the subdivision method.
258  *  @field c2               The second parameter for the subdivision method.
259  */
260 typedef struct TQ3SubdivisionStyleData {
261     TQ3SubdivisionMethod                        method;
262     float                                       c1;
263     float                                       c2;
264 } TQ3SubdivisionStyleData;
265 
266 
267 /*!
268  *  @typedef
269  *      TQ3PickParts
270  *  @discussion
271  *      Holds TQ3PickPartsMasks values.
272  */
273 typedef TQ3Uns32                                TQ3PickParts;
274 
275 
276 /*!
277  *  @typedef
278  *      TQ3AntiAliasMode
279  *  @discussion
280  *      Holds one or more TQ3AntiAliasModeMasks values.
281  */
282 typedef TQ3Uns32                                TQ3AntiAliasMode;
283 
284 
285 /*!
286  *  @struct
287  *      TQ3AntiAliasStyleData
288  *  @discussion
289  *      Anti-alias style data.
290  *
291  *      Anti-aliasing may be toggled on and off using the state switch. To
292  *      guarantee that no anti-aliasing is performed, the state must be set
293  *      to kQ3Off.
294  *
295  *      The type of anti-aliasing performed is controlled by the mode switch.
296  *
297  *      The quality of anti-aliasing performed is controlled by the quality
298  *      field, which can range from 0.0 (minimum) to 1.0 (maximum). Values
299  *      outside this range are undefined.
300  *
301  *  @field state            Is anti-aliasing active?
302  *  @field mode             The anti-aliasing mode.
303  *  @field quality          The anti-aliasing quality.
304  */
305 typedef struct TQ3AntiAliasStyleData {
306     TQ3Switch                                   state;
307     TQ3AntiAliasMode                            mode;
308     float                                       quality;
309 } TQ3AntiAliasStyleData;
310 
311 
312 /*!
313  *  @struct
314  *      TQ3FogStyleData
315  *  @discussion
316  *      Fog style data.
317  *
318  *      Fog may be toggled on and off using the state switch. To guarantee that
319  *      no fogging is performed, the state must be set to kQ3Off.
320  *
321  *      The type of fogging performed is controlled by the mode switch.
322  *
323  *  @field state            Is fog active?
324  *  @field mode             The fog mode.
325  *  @field fogStart         The start point for fog (only used for linear fog).
326  *  @field fogEnd           The end point for fog (only used for linear fog).
327  *  @field density          The maximum density for fog (ignored in linear fog).
328  *  @field color            The fog color.
329  */
330 typedef struct TQ3FogStyleData {
331     TQ3Switch                                   state;
332     TQ3FogMode                                  mode;
333     float                                       fogStart;
334     float                                       fogEnd;
335     float                                       density;
336     TQ3ColorARGB                                color;
337 } TQ3FogStyleData;
338 
339 
340 
341 
342 
343 //=============================================================================
344 //      Function prototypes
345 //-----------------------------------------------------------------------------
346 /*!
347  *  @function
348  *      Q3Style_GetType
349  *  @discussion
350  *      Get the type of a style object.
351  *
352  *  @param style            The style to query.
353  *  @result                 The type of the style.
354  */
355 Q3_EXTERN_API_C ( TQ3ObjectType  )
356 Q3Style_GetType (
357     TQ3StyleObject                style
358 );
359 
360 
361 
362 /*!
363  *  @function
364  *      Q3Style_Submit
365  *  @discussion
366  *      Submit a style to a view.
367  *
368  *  @param style            The style to submit.
369  *  @param view             The view to submit the style to.
370  *  @result                 Success or failure of the operation.
371  */
372 Q3_EXTERN_API_C ( TQ3Status  )
373 Q3Style_Submit (
374     TQ3StyleObject                style,
375     TQ3ViewObject                 view
376 );
377 
378 
379 
380 /*!
381  *  @function
382  *      Q3SubdivisionStyle_New
383  *  @discussion
384  *      Create a subdivision style.
385  *
386  *  @param data             The subdivision style data.
387  *  @result                 The new subdivision style.
388  */
389 Q3_EXTERN_API_C ( TQ3StyleObject  )
390 Q3SubdivisionStyle_New (
391     const TQ3SubdivisionStyleData *data
392 );
393 
394 
395 
396 /*!
397  *  @function
398  *      Q3SubdivisionStyle_Submit
399  *  @discussion
400  *      Submit a subdivision style to a view.
401  *
402  *  @param data             The subdivision style data.
403  *  @param view             The view to submit the style to.
404  *  @result                 Success or failure of the operation.
405  */
406 Q3_EXTERN_API_C ( TQ3Status  )
407 Q3SubdivisionStyle_Submit (
408     const TQ3SubdivisionStyleData *data,
409     TQ3ViewObject                 view
410 );
411 
412 
413 
414 /*!
415  *  @function
416  *      Q3SubdivisionStyle_SetData
417  *  @discussion
418  *      Set the data for a subdivision style.
419  *
420  *  @param subdiv           The style to update.
421  *  @param data             The new data for the style.
422  *  @result                 Success or failure of the operation.
423  */
424 Q3_EXTERN_API_C ( TQ3Status  )
425 Q3SubdivisionStyle_SetData (
426     TQ3StyleObject                subdiv,
427     const TQ3SubdivisionStyleData *data
428 );
429 
430 
431 
432 /*!
433  *  @function
434  *      Q3SubdivisionStyle_GetData
435  *  @discussion
436  *      Get the data from a subdivision style.
437  *
438  *  @param subdiv           The style to query.
439  *  @param data             Receives the data from the style.
440  *  @result                 Success or failure of the operation.
441  */
442 Q3_EXTERN_API_C ( TQ3Status  )
443 Q3SubdivisionStyle_GetData (
444     TQ3StyleObject                subdiv,
445     TQ3SubdivisionStyleData       *data
446 );
447 
448 
449 
450 /*!
451  *  @function
452  *      Q3PickIDStyle_New
453  *  @discussion
454  *      Create a pick ID style.
455  *
456  *  @param id               The pick ID.
457  *  @result                 The new pick ID style.
458  */
459 Q3_EXTERN_API_C ( TQ3StyleObject  )
460 Q3PickIDStyle_New (
461     TQ3Uns32                      id
462 );
463 
464 
465 
466 /*!
467  *  @function
468  *      Q3PickIDStyle_Submit
469  *  @discussion
470  *      Submit a pick ID style to a view.
471  *
472  *  @param id               The pick ID.
473  *  @param view             The view to submit the style to.
474  *  @result                 Success or failure of the operation.
475  */
476 Q3_EXTERN_API_C ( TQ3Status  )
477 Q3PickIDStyle_Submit (
478     TQ3Uns32                      id,
479     TQ3ViewObject                 view
480 );
481 
482 
483 
484 /*!
485  *  @function
486  *      Q3PickIDStyle_Get
487  *  @discussion
488  *      Get the data from a pick ID style.
489  *
490  *  @param styleObject      The style to query.
491  *  @param id               Receives the data from the style.
492  *  @result                 Success or failure of the operation.
493  */
494 Q3_EXTERN_API_C ( TQ3Status  )
495 Q3PickIDStyle_Get (
496     TQ3StyleObject                pickIDObject,
497     TQ3Uns32                      *id
498 );
499 
500 
501 
502 /*!
503  *  @function
504  *      Q3PickIDStyle_Set
505  *  @discussion
506  *      Set the data for a pick ID style.
507  *
508  *  @param pickIDObject     The style to update.
509  *  @param id               The new data for the style.
510  *  @result                 Success or failure of the operation.
511  */
512 Q3_EXTERN_API_C ( TQ3Status  )
513 Q3PickIDStyle_Set (
514     TQ3StyleObject                pickIDObject,
515     TQ3Uns32                      id
516 );
517 
518 
519 
520 /*!
521  *  @function
522  *      Q3PickPartsStyle_New
523  *  @discussion
524  *      Create a pick parts style.
525  *
526  *  @param parts            The pick parts.
527  *  @result                 The new pick parts style.
528  */
529 Q3_EXTERN_API_C ( TQ3StyleObject  )
530 Q3PickPartsStyle_New (
531     TQ3PickParts                  parts
532 );
533 
534 
535 
536 /*!
537  *  @function
538  *      Q3PickPartsStyle_Submit
539  *  @discussion
540  *      Submit a pick parts style to a view.
541  *
542  *  @param parts            The pick parts style data.
543  *  @param view             The view to submit the style to.
544  *  @result                 Success or failure of the operation.
545  */
546 Q3_EXTERN_API_C ( TQ3Status  )
547 Q3PickPartsStyle_Submit (
548     TQ3PickParts                  parts,
549     TQ3ViewObject                 view
550 );
551 
552 
553 
554 /*!
555  *  @function
556  *      Q3PickPartsStyle_Get
557  *  @discussion
558  *      Get the data from a pick parts style.
559  *
560  *  @param pickPartsObject  The style to query.
561  *  @param parts            Receives the data from the style.
562  *  @result                 Success or failure of the operation.
563  */
564 Q3_EXTERN_API_C ( TQ3Status  )
565 Q3PickPartsStyle_Get (
566     TQ3StyleObject                pickPartsObject,
567     TQ3PickParts                  *parts
568 );
569 
570 
571 
572 /*!
573  *  @function
574  *      Q3PickPartsStyle_Set
575  *  @discussion
576  *      Set the data for a pick parts style.
577  *
578  *  @param pickPartsObject  The style to update.
579  *  @param parts            The new data for the style.
580  *  @result                 Success or failure of the operation.
581  */
582 Q3_EXTERN_API_C ( TQ3Status  )
583 Q3PickPartsStyle_Set (
584     TQ3StyleObject                pickPartsObject,
585     TQ3PickParts                  parts
586 );
587 
588 
589 
590 /*!
591  *  @function
592  *      Q3CastShadowsStyle_New
593  *  @discussion
594  *      Create a cast shadows style.
595  *
596  *      <em>This function is not available in QD3D.</em>
597  *
598  *  @param castShadows      The cast shadows style data.
599  *  @result                 The new cast shadows style.
600  */
601 #if QUESA_ALLOW_QD3D_EXTENSIONS
602 
603 Q3_EXTERN_API_C ( TQ3StyleObject  )
604 Q3CastShadowsStyle_New (
605     TQ3Boolean                    castsShadows
606 );
607 
608 #endif // QUESA_ALLOW_QD3D_EXTENSIONS
609 
610 
611 
612 /*!
613  *  @function
614  *      Q3CastShadowsStyle_Submit
615  *  @discussion
616  *      Submit a cast shadows style to a view.
617  *
618  *      <em>This function is not available in QD3D.</em>
619  *
620  *  @param castShadows      The cast shadows style data.
621  *  @param view             The view to submit the style to.
622  *  @result                 Success or failure of the operation.
623  */
624 #if QUESA_ALLOW_QD3D_EXTENSIONS
625 
626 Q3_EXTERN_API_C ( TQ3Status  )
627 Q3CastShadowsStyle_Submit (
628     TQ3Boolean                    castShadows,
629     TQ3ViewObject                 view
630 );
631 
632 #endif // QUESA_ALLOW_QD3D_EXTENSIONS
633 
634 
635 
636 /*!
637  *  @function
638  *      Q3CastShadowsStyle_Get
639  *  @discussion
640  *      Get the data from a cast shadows style.
641  *
642  *      <em>This function is not available in QD3D.</em>
643  *
644  *  @param styleObject      The style to query.
645  *  @param castShadows      Receives the data from the style.
646  *  @result                 Success or failure of the operation.
647  */
648 #if QUESA_ALLOW_QD3D_EXTENSIONS
649 
650 Q3_EXTERN_API_C ( TQ3Status  )
651 Q3CastShadowsStyle_Get (
652     TQ3StyleObject                styleObject,
653     TQ3Boolean                    *castShadows
654 );
655 
656 #endif // QUESA_ALLOW_QD3D_EXTENSIONS
657 
658 
659 
660 /*!
661  *  @function
662  *      Q3CastShadowsStyle_Set
663  *  @discussion
664  *      Set the data for a cast shadows style.
665  *
666  *      <em>This function is not available in QD3D.</em>
667  *
668  *  @param styleObject      The style to update.
669  *  @param castShadows      The new data for the style.
670  *  @result                 Success or failure of the operation.
671  */
672 #if QUESA_ALLOW_QD3D_EXTENSIONS
673 
674 Q3_EXTERN_API_C ( TQ3Status  )
675 Q3CastShadowsStyle_Set (
676     TQ3StyleObject                styleObject,
677     TQ3Boolean                    castShadows
678 );
679 
680 #endif // QUESA_ALLOW_QD3D_EXTENSIONS
681 
682 
683 
684 /*!
685  *  @function
686  *      Q3ReceiveShadowsStyle_New
687  *  @discussion
688  *      Create a receive shadows style.
689  *
690  *  @param receiveShadows   The receive shadows style data.
691  *  @result                 The new receive shadows style.
692  */
693 Q3_EXTERN_API_C ( TQ3StyleObject  )
694 Q3ReceiveShadowsStyle_New (
695     TQ3Boolean                    receiveShadows
696 );
697 
698 
699 
700 /*!
701  *  @function
702  *      Q3ReceiveShadowsStyle_Submit
703  *  @discussion
704  *      Submit a receive shadows style to a view.
705  *
706  *  @param receiveShadows   The receive shadows style data.
707  *  @param view             The view to submit the style to.
708  *  @result                 Success or failure of the operation.
709  */
710 Q3_EXTERN_API_C ( TQ3Status  )
711 Q3ReceiveShadowsStyle_Submit (
712     TQ3Boolean                    receiveShadows,
713     TQ3ViewObject                 view
714 );
715 
716 
717 
718 /*!
719  *  @function
720  *      Q3ReceiveShadowsStyle_Get
721  *  @discussion
722  *      Get the data from a receive shadows style.
723  *
724  *  @param styleObject      The style to query.
725  *  @param receiveShadows   Receives the data from the style.
726  *  @result                 Success or failure of the operation.
727  */
728 Q3_EXTERN_API_C ( TQ3Status  )
729 Q3ReceiveShadowsStyle_Get (
730     TQ3StyleObject                styleObject,
731     TQ3Boolean                    *receiveShadows
732 );
733 
734 
735 
736 /*!
737  *  @function
738  *      Q3ReceiveShadowsStyle_Set
739  *  @discussion
740  *      Set the data for a receive shadows style.
741  *
742  *  @param styleObject      The style to update.
743  *  @param receiveShadows   The new data for the style.
744  *  @result                 Success or failure of the operation.
745  */
746 Q3_EXTERN_API_C ( TQ3Status  )
747 Q3ReceiveShadowsStyle_Set (
748     TQ3StyleObject                styleObject,
749     TQ3Boolean                    receiveShadows
750 );
751 
752 
753 
754 /*!
755  *  @function
756  *      Q3FillStyle_New
757  *  @discussion
758  *      Create a fill style.
759  *
760  *  @param fillStyle        The fill style data.
761  *  @result                 The new fill style.
762  */
763 Q3_EXTERN_API_C ( TQ3StyleObject  )
764 Q3FillStyle_New (
765     TQ3FillStyle                  fillStyle
766 );
767 
768 
769 
770 /*!
771  *  @function
772  *      Q3FillStyle_Submit
773  *  @discussion
774  *      Submit a fill style to a view.
775  *
776  *  @param fillStyle        The fill style data.
777  *  @param view             The view to submit the style to.
778  *  @result                 Success or failure of the operation.
779  */
780 Q3_EXTERN_API_C ( TQ3Status  )
781 Q3FillStyle_Submit (
782     TQ3FillStyle                  fillStyle,
783     TQ3ViewObject                 view
784 );
785 
786 
787 
788 /*!
789  *  @function
790  *      Q3FillStyle_Get
791  *  @discussion
792  *      Get the data from a fill style.
793  *
794  *  @param styleObject      The style to query.
795  *  @param filLStyle        Receives the data from the style.
796  *  @result                 Success or failure of the operation.
797  */
798 Q3_EXTERN_API_C ( TQ3Status  )
799 Q3FillStyle_Get (
800     TQ3StyleObject                styleObject,
801     TQ3FillStyle                  *fillStyle
802 );
803 
804 
805 
806 /*!
807  *  @function
808  *      Q3FillStyle_Set
809  *  @discussion
810  *      Set the data for a fill style.
811  *
812  *  @param styleObject      The style to update.
813  *  @param fillStyle        The new data for the style.
814  *  @result                 Success or failure of the operation.
815  */
816 Q3_EXTERN_API_C ( TQ3Status  )
817 Q3FillStyle_Set (
818     TQ3StyleObject                styleObject,
819     TQ3FillStyle                  fillStyle
820 );
821 
822 
823 
824 /*!
825  *  @function
826  *      Q3BackfacingStyle_New
827  *  @discussion
828  *      Create a backfacing style.
829  *
830  *  @param backfacingStyle  The backfacing style data.
831  *  @result                 The new backfacing style.
832  */
833 Q3_EXTERN_API_C ( TQ3StyleObject  )
834 Q3BackfacingStyle_New (
835     TQ3BackfacingStyle            backfacingStyle
836 );
837 
838 
839 
840 /*!
841  *  @function
842  *      Q3BackfacingStyle_Submit
843  *  @discussion
844  *      Submit a backfacing style to a view.
845  *
846  *  @param backfacingStyle    The backfacing style data.
847  *  @param view               The view to submit the style to.
848  *  @result                   Success or failure of the operation.
849  */
850 Q3_EXTERN_API_C ( TQ3Status  )
851 Q3BackfacingStyle_Submit (
852     TQ3BackfacingStyle            backfacingStyle,
853     TQ3ViewObject                 view
854 );
855 
856 
857 
858 /*!
859  *  @function
860  *      Q3BackfacingStyle_Get
861  *  @discussion
862  *      Get the data from a backfacing style.
863  *
864  *  @param backfacingObject    The style to query.
865  *  @param backfacingStyle     Receives the data from the style.
866  *  @result                    Success or failure of the operation.
867  */
868 Q3_EXTERN_API_C ( TQ3Status  )
869 Q3BackfacingStyle_Get (
870     TQ3StyleObject                backfacingObject,
871     TQ3BackfacingStyle            *backfacingStyle
872 );
873 
874 
875 
876 /*!
877  *  @function
878  *      Q3BackfacingStyle_Set
879  *  @discussion
880  *      Set the data for a backfacing style.
881  *
882  *  @param backfacingObject    The style to update.
883  *  @param backfacingStyle     The new data for the style.
884  *  @result                    Success or failure of the operation.
885  */
886 Q3_EXTERN_API_C ( TQ3Status  )
887 Q3BackfacingStyle_Set (
888     TQ3StyleObject                backfacingObject,
889     TQ3BackfacingStyle            backfacingStyle
890 );
891 
892 
893 
894 /*!
895  *  @function
896  *      Q3InterpolationStyle_New
897  *  @discussion
898  *      Create an interpolation style.
899  *
900  *  @param interpolationStyle    The interpolation style data.
901  *  @result                      The new interpolation style.
902  */
903 Q3_EXTERN_API_C ( TQ3StyleObject  )
904 Q3InterpolationStyle_New (
905     TQ3InterpolationStyle         interpolationStyle
906 );
907 
908 
909 
910 /*!
911  *  @function
912  *      Q3InterpolationStyle_Submit
913  *  @discussion
914  *      Submit an interpolation style to a view.
915  *
916  *  @param interpolationStyle    The interpolation style data.
917  *  @param view                  The view to submit the style to.
918  *  @result                      Success or failure of the operation.
919  */
920 Q3_EXTERN_API_C ( TQ3Status  )
921 Q3InterpolationStyle_Submit (
922     TQ3InterpolationStyle         interpolationStyle,
923     TQ3ViewObject                 view
924 );
925 
926 
927 
928 /*!
929  *  @function
930  *      Q3InterpolationStyle_Get
931  *  @discussion
932  *      Get the data from an interpolation style.
933  *
934  *  @param interpolationObject    The style to query.
935  *  @param interpolationStyle     Receives the data from the style.
936  *  @result                       Success or failure of the operation.
937  */
938 Q3_EXTERN_API_C ( TQ3Status  )
939 Q3InterpolationStyle_Get (
940     TQ3StyleObject                interpolationObject,
941     TQ3InterpolationStyle         *interpolationStyle
942 );
943 
944 
945 
946 /*!
947  *  @function
948  *      Q3InterpolationStyle_Set
949  *  @discussion
950  *      Set the data for an interpolation style.
951  *
952  *  @param interpolationObject    The style to update.
953  *  @param interpolationStyle     The new data for the style.
954  *  @result                       Success or failure of the operation.
955  */
956 Q3_EXTERN_API_C ( TQ3Status  )
957 Q3InterpolationStyle_Set (
958     TQ3StyleObject                interpolationObject,
959     TQ3InterpolationStyle         interpolationStyle
960 );
961 
962 
963 
964 /*!
965  *  @function
966  *      Q3HighlightStyle_New
967  *  @discussion
968  *      Create a highlight style.
969  *
970  *  @param highlightAttribute    The highlight style set.
971  *  @result                      The new highlight style.
972  */
973 Q3_EXTERN_API_C ( TQ3StyleObject  )
974 Q3HighlightStyle_New (
975     TQ3AttributeSet               highlightAttribute
976 );
977 
978 
979 
980 /*!
981  *  @function
982  *      Q3HighlightStyle_Submit
983  *  @discussion
984  *      Submit a highlight style to a view.
985  *
986  *  @param highlightAttribute    The highlight style data.
987  *  @param view                  The view to submit the style to.
988  *  @result                      Success or failure of the operation.
989  */
990 Q3_EXTERN_API_C ( TQ3Status  )
991 Q3HighlightStyle_Submit (
992     TQ3AttributeSet               highlightAttribute,
993     TQ3ViewObject                 view
994 );
995 
996 
997 
998 /*!
999  *  @function
1000  *      Q3HighlightStyle_Get
1001  *  @discussion
1002  *      Get the data from a highlight style.
1003  *
1004  *  @param highlight             The style to query.
1005  *  @param highlightAttribute    Receives the data from the style.
1006  *  @result                      Success or failure of the operation.
1007  */
1008 Q3_EXTERN_API_C ( TQ3Status  )
1009 Q3HighlightStyle_Get (
1010     TQ3StyleObject                highlight,
1011     TQ3AttributeSet               *highlightAttribute
1012 );
1013 
1014 
1015 
1016 /*!
1017  *  @function
1018  *      Q3HighlightStyle_Set
1019  *  @discussion
1020  *      Set the data for a highlight style.
1021  *
1022  *  @param highlight             The style to update.
1023  *  @param highlightAttribute    The new data for the style.
1024  *  @result                      Success or failure of the operation.
1025  */
1026 Q3_EXTERN_API_C ( TQ3Status  )
1027 Q3HighlightStyle_Set (
1028     TQ3StyleObject                highlight,
1029     TQ3AttributeSet               highlightAttribute
1030 );
1031 
1032 
1033 
1034 /*!
1035  *  @function
1036  *      Q3OrientationStyle_New
1037  *  @discussion
1038  *      Create an orientation style.
1039  *
1040  *  @param frontFacingDirection    The orientation style data.
1041  *  @result                        The new orientation style.
1042  */
1043 Q3_EXTERN_API_C ( TQ3StyleObject  )
1044 Q3OrientationStyle_New (
1045     TQ3OrientationStyle           frontFacingDirection
1046 );
1047 
1048 
1049 
1050 /*!
1051  *  @function
1052  *      Q3OrientationStyle_Submit
1053  *  @discussion
1054  *      Submit an orientation style to a view.
1055  *
1056  *  @param frontFacingDirection    The orientation style data.
1057  *  @param view                    The view to submit the style to.
1058  *  @result                        Success or failure of the operation.
1059  */
1060 Q3_EXTERN_API_C ( TQ3Status  )
1061 Q3OrientationStyle_Submit (
1062     TQ3OrientationStyle           frontFacingDirection,
1063     TQ3ViewObject                 view
1064 );
1065 
1066 
1067 
1068 /*!
1069  *  @function
1070  *      Q3OrientationStyle_Get
1071  *  @discussion
1072  *      Get the data from an orientation style.
1073  *
1074  *  @param frontFacingDirectionObject    The style to query.
1075  *  @param frontFacingDirection          Receives the data from the style.
1076  *  @result                              Success or failure of the operation.
1077  */
1078 Q3_EXTERN_API_C ( TQ3Status  )
1079 Q3OrientationStyle_Get (
1080     TQ3StyleObject                frontFacingDirectionObject,
1081     TQ3OrientationStyle           *frontFacingDirection
1082 );
1083 
1084 
1085 
1086 /*!
1087  *  @function
1088  *      Q3OrientationStyle_Set
1089  *  @discussion
1090  *      Set the data for an orientation style.
1091  *
1092  *  @param frontFacingDirectionObject    The style to update.
1093  *  @param frontFacingDirection          The new data for the style.
1094  *  @result                              Success or failure of the operation.
1095  */
1096 Q3_EXTERN_API_C ( TQ3Status  )
1097 Q3OrientationStyle_Set (
1098     TQ3StyleObject                frontFacingDirectionObject,
1099     TQ3OrientationStyle           frontFacingDirection
1100 );
1101 
1102 
1103 
1104 /*!
1105  *  @function
1106  *      Q3AntiAliasStyle_New
1107  *  @discussion
1108  *      Create an anti-alias style.
1109  *
1110  *  @param data             The anti-alias style data.
1111  *  @result                 The new anti-alias style.
1112  */
1113 Q3_EXTERN_API_C ( TQ3StyleObject  )
1114 Q3AntiAliasStyle_New (
1115     const TQ3AntiAliasStyleData   *data
1116 );
1117 
1118 
1119 
1120 /*!
1121  *  @function
1122  *      Q3AntiAliasStyle_Submit
1123  *  @discussion
1124  *      Submit an anti-alias style to a view.
1125  *
1126  *  @param data             The anti-alias style data.
1127  *  @param view             The view to submit the style to.
1128  *  @result                 Success or failure of the operation.
1129  */
1130 Q3_EXTERN_API_C ( TQ3Status  )
1131 Q3AntiAliasStyle_Submit (
1132     const TQ3AntiAliasStyleData   *data,
1133     TQ3ViewObject                 view
1134 );
1135 
1136 
1137 
1138 /*!
1139  *  @function
1140  *      Q3AntiAliasStyle_GetData
1141  *  @discussion
1142  *      Get the data from an anti-alias style.
1143  *
1144  *  @param styleObject      The style to query.
1145  *  @param data             Receives the data from the style.
1146  *  @result                 Success or failure of the operation.
1147  */
1148 Q3_EXTERN_API_C ( TQ3Status  )
1149 Q3AntiAliasStyle_GetData (
1150     TQ3StyleObject                styleObject,
1151     TQ3AntiAliasStyleData         *data
1152 );
1153 
1154 
1155 
1156 /*!
1157  *  @function
1158  *      Q3AntiAliasStyle_SetData
1159  *  @discussion
1160  *      Set the data for an anti-alias style.
1161  *
1162  *  @param styleObject      The style to update.
1163  *  @param data             The new data for the style.
1164  *  @result                 Success or failure of the operation.
1165  */
1166 Q3_EXTERN_API_C ( TQ3Status  )
1167 Q3AntiAliasStyle_SetData (
1168     TQ3StyleObject                styleObject,
1169     const TQ3AntiAliasStyleData   *data
1170 );
1171 
1172 
1173 
1174 /*!
1175  *  @function
1176  *      Q3FogStyle_New
1177  *  @discussion
1178  *      Create a fog style.
1179  *
1180  *  @param data             The fog style data.
1181  *  @result                 The new fog style.
1182  */
1183 Q3_EXTERN_API_C ( TQ3StyleObject  )
1184 Q3FogStyle_New (
1185     const TQ3FogStyleData         *data
1186 );
1187 
1188 
1189 
1190 /*!
1191  *  @function
1192  *      Q3FogStyle_Submit
1193  *  @discussion
1194  *      Submit a fog style to a view.
1195  *
1196  *  @param data             The fog style data.
1197  *  @param view             The view to submit the style to.
1198  *  @result                 Success or failure of the operation.
1199  */
1200 Q3_EXTERN_API_C ( TQ3Status  )
1201 Q3FogStyle_Submit (
1202     const TQ3FogStyleData         *data,
1203     TQ3ViewObject                 view
1204 );
1205 
1206 
1207 
1208 /*!
1209  *  @function
1210  *      Q3FogStyle_GetData
1211  *  @discussion
1212  *      Get the data from a fog style.
1213  *
1214  *  @param styleObject      The style to query.
1215  *  @param data             Receives the data from the style.
1216  *  @result                 Success or failure of the operation.
1217  */
1218 Q3_EXTERN_API_C ( TQ3Status  )
1219 Q3FogStyle_GetData (
1220     TQ3StyleObject                styleObject,
1221     TQ3FogStyleData               *data
1222 );
1223 
1224 
1225 
1226 /*!
1227  *  @function
1228  *      Q3FogStyle_SetData
1229  *  @discussion
1230  *      Set the data for a fog style.
1231  *
1232  *  @param styleObject      The style to update.
1233  *  @param data             The new data for the style.
1234  *  @result                 Success or failure of the operation.
1235  */
1236 Q3_EXTERN_API_C ( TQ3Status  )
1237 Q3FogStyle_SetData (
1238     TQ3StyleObject                styleObject,
1239     const TQ3FogStyleData         *data
1240 );
1241 
1242 
1243 
1244 
1245 
1246 //=============================================================================
1247 //      C++ postamble
1248 //-----------------------------------------------------------------------------
1249 #ifdef __cplusplus
1250 }
1251 #endif
1252 
1253 #endif
1254 
1255 
1256