![]() |
http://www.sim.no http://www.coin3d.org |
00001 #ifndef COIN_SOVECTORIZEACTION_H 00002 #define COIN_SOVECTORIZEACTION_H 00003 00004 /**************************************************************************\ 00005 * 00006 * This file is part of the Coin 3D visualization library. 00007 * Copyright (C) 1998-2007 by Systems in Motion. All rights reserved. 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU General Public License 00011 * ("GPL") version 2 as published by the Free Software Foundation. 00012 * See the file LICENSE.GPL at the root directory of this source 00013 * distribution for additional information about the GNU GPL. 00014 * 00015 * For using Coin with software that can not be combined with the GNU 00016 * GPL, and for taking advantage of the additional benefits of our 00017 * support services, please contact Systems in Motion about acquiring 00018 * a Coin Professional Edition License. 00019 * 00020 * See http://www.coin3d.org/ for more information. 00021 * 00022 * Systems in Motion, Postboks 1283, Pirsenteret, 7462 Trondheim, NORWAY. 00023 * http://www.sim.no/ sales@sim.no coin-support@coin3d.org 00024 * 00025 \**************************************************************************/ 00026 00027 #include <Inventor/actions/SoCallbackAction.h> 00028 #include <Inventor/actions/SoSubAction.h> 00029 #include <Inventor/SbVec2f.h> 00030 #include <Inventor/SbColor.h> 00031 00032 class SoVectorOutput; 00033 class SbViewportRegion; 00034 class SoVectorizeItem; 00035 class SoVectorizeActionP; 00036 class SbBSPTree; 00037 00038 // ************************************************************************* 00039 00040 class COIN_DLL_API SoVectorizeAction : public SoCallbackAction { 00041 typedef SoCallbackAction inherited; 00042 00043 SO_ACTION_HEADER(SoVectorizeAction); 00044 00045 public: 00046 SoVectorizeAction(void); 00047 virtual ~SoVectorizeAction(); 00048 00049 SoVectorOutput * getOutput(void) const; 00050 00051 static void initClass(void); 00052 00053 enum DimensionUnit { INCH, MM, METER }; 00054 enum Orientation { PORTRAIT, LANDSCAPE }; 00055 00056 enum PageSize { 00057 A0 = 0, 00058 A1, 00059 A2, 00060 A3, 00061 A4, 00062 A5, 00063 A6, 00064 A7, 00065 A8, 00066 A9, 00067 A10 00068 }; 00069 00070 virtual void apply(SoNode * node); 00071 virtual void apply(SoPath * path); 00072 virtual void apply(const SoPathList & pathlist, SbBool obeysrules = FALSE); 00073 00074 void beginStandardPage(const PageSize & pagesize, const float border = 10.0f); 00075 00076 virtual void beginPage(const SbVec2f & startpagepos, 00077 const SbVec2f & pagesize, 00078 DimensionUnit u = MM); 00079 virtual void endPage(void); 00080 00081 virtual void calibrate(const SbViewportRegion & vp); 00082 00083 virtual void beginViewport(const SbVec2f & startpos = SbVec2f(-1.0f, 1.0f), 00084 const SbVec2f & size = SbVec2f(-1.0f, -1.0f), 00085 DimensionUnit u = MM); 00086 virtual void endViewport(void); 00087 00088 virtual void setOrientation(Orientation o); 00089 virtual Orientation getOrientation(void) const; 00090 00091 virtual void setBackgroundColor(SbBool bg, const SbColor & col = SbColor(0.0f, 0.0f, 0.0f)); 00092 virtual SbBool getBackgroundColor(SbColor & col) const; 00093 00094 virtual void setNominalWidth(float w, DimensionUnit u = MM); 00095 virtual float getNominalWidth(DimensionUnit u = MM) const; 00096 00097 virtual void setPixelImageSize(float w, DimensionUnit u = MM); 00098 virtual float getPixelImageSize(DimensionUnit u = MM) const; 00099 00100 enum PointStyle { 00101 CIRCLE, 00102 SQUARE 00103 }; 00104 00105 virtual void setPointStyle(const PointStyle & style); 00106 virtual PointStyle getPointStyle(void) const; 00107 00108 const SbVec2f & getPageStartpos(void) const; 00109 const SbVec2f & getPageSize(void) const; 00110 00111 public: 00112 // for TGS OIV compatibility. Might be implemented in the future 00113 enum ColorTranslationMethod { REVERSE_ONLY_BLACK_AND_WHITE, AS_IS, REVERSE }; 00114 00115 enum JoinLineStyle { NO_JOIN, MITERED_JOIN, MITERED_BEVELED_JOIN, 00116 BEVELED_JOIN, TRIANGULAR_JOIN, ROUNDED_JOIN } ; 00117 enum EndLineStyle { BUTT_END, SQUARE_END, TRIANGULAR_END, ROUND_END }; 00118 enum HLHSRMode { NO_HLHSR, HLHSR_SIMPLE_PAINTER, HLHSR_PAINTER, 00119 HLHSR_PAINTER_SURFACE_REMOVAL, HIDDEN_LINES_REMOVAL }; 00120 00121 virtual void setDrawingDimensions(const SbVec2f & d, DimensionUnit u = MM); 00122 virtual void setDrawingDimensions(float w, float h, DimensionUnit u = MM) { this->setDrawingDimensions(SbVec2f(w, h), u); } 00123 virtual SbVec2f getDrawingDimensions(DimensionUnit u = MM) const; 00124 00125 virtual void setStartPosition(const SbVec2f & p, DimensionUnit u = MM); 00126 virtual void setStartPosition(float x, float y, DimensionUnit u = MM) { this->setStartPosition(SbVec2f(x, y), u); } 00127 virtual SbVec2f getStartPosition(DimensionUnit u = MM) const; 00128 00129 virtual void setColorTranslationMethod(ColorTranslationMethod method); 00130 virtual ColorTranslationMethod getColorTranslationMethod(void) const; 00131 00132 virtual void setLineEndStyle(EndLineStyle style); 00133 virtual EndLineStyle getLineEndStyle(void) const; 00134 00135 virtual void setLineJoinsStyle(JoinLineStyle style); 00136 virtual JoinLineStyle getLineJoinsStyle(void) const; 00137 00138 virtual void setHLHSRMode(HLHSRMode mode); 00139 HLHSRMode getHLHSRMode(void) const; 00140 00141 virtual void setBorder(float width); 00142 virtual void setBorder (float width, SbColor color); 00143 00144 virtual void setMiterLimit(float limit); 00145 virtual float getMiterLimit(void) const; 00146 00147 virtual void setPenDescription(int num_pens, 00148 const SbColor* colors = 0, 00149 const float * widths = 0, 00150 DimensionUnit u = MM); 00151 virtual void getPenDescription(SbColor * colors, 00152 float * widths, 00153 DimensionUnit u = MM) const; 00154 virtual int getPenNum(void) const; 00155 00156 virtual void setColorPriority(SbBool priority); 00157 virtual SbBool getColorPriority(void) const; 00158 00159 virtual void enableLighting(SbBool flag); 00160 SbBool isLightingEnabled(void) const; 00161 00162 protected: 00163 void setOutput(SoVectorOutput * output); 00164 00165 virtual float pixelsToUnits(const int pixels); 00166 virtual void printHeader(void) const = 0; 00167 virtual void printFooter(void) const; 00168 virtual void printBackground(void) const; 00169 virtual void printItem(const SoVectorizeItem * item) const = 0; 00170 virtual void printViewport(void) const; 00171 00172 SbVec2f getRotatedViewportStartpos(void) const; 00173 SbVec2f getRotatedViewportSize(void) const; 00174 00175 const SbBSPTree & getBSPTree(void) const; 00176 00177 private: 00178 SoVectorizeActionP * pimpl; 00179 friend class SoVectorizeActionP; 00180 }; 00181 00182 // ************************************************************************* 00183 00184 #ifndef COIN_INTERNAL 00185 // For SGI / TGS Open Inventor compile-time compatibility. 00186 #include <Inventor/nodes/SoImage.h> 00187 #endif // COIN_INTERNAL 00188 00189 // ************************************************************************* 00190 00191 #endif // !COIN_SOVECTORIZEACTION_H
Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.
Generated on Mon Feb 23 16:33:35 2009 for Coin by Doxygen. 1.5.8