1 #ifndef COIN_SOASCIITEXT_H 2 #define COIN_SOASCIITEXT_H 3 4 /**************************************************************************\ 5 * Copyright (c) Kongsberg Oil & Gas Technologies AS 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions are 10 * met: 11 * 12 * Redistributions of source code must retain the above copyright notice, 13 * this list of conditions and the following disclaimer. 14 * 15 * Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * Neither the name of the copyright holder nor the names of its 20 * contributors may be used to endorse or promote products derived from 21 * this software without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 27 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 \**************************************************************************/ 35 36 #include <Inventor/nodes/SoSubNode.h> 37 #include <Inventor/nodes/SoShape.h> 38 #include <Inventor/fields/SoMFString.h> 39 #include <Inventor/fields/SoSFFloat.h> 40 #include <Inventor/fields/SoSFEnum.h> 41 #include <Inventor/fields/SoMFFloat.h> 42 #include <Inventor/lists/SbList.h> 43 44 class COIN_DLL_API SoAsciiText : public SoShape { 45 typedef SoShape inherited; 46 47 SO_NODE_HEADER(SoAsciiText); 48 49 public: 50 static void initClass(void); 51 SoAsciiText(void); 52 53 enum Justification { 54 LEFT = 1, 55 RIGHT, 56 CENTER 57 }; 58 59 SoMFString string; 60 SoSFFloat spacing; 61 SoSFEnum justification; 62 SoMFFloat width; 63 64 virtual void GLRender(SoGLRenderAction * action); 65 virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action); 66 67 protected: 68 virtual ~SoAsciiText(); 69 70 virtual void computeBBox(SoAction * action, SbBox3f & box, SbVec3f & center); 71 virtual void generatePrimitives(SoAction *); 72 73 virtual SoDetail * createTriangleDetail(SoRayPickAction * action, 74 const SoPrimitiveVertex * v1, 75 const SoPrimitiveVertex * v2, 76 const SoPrimitiveVertex * v3, 77 SoPickedPoint * pp); 78 virtual void notify(SoNotList * list); 79 80 private: 81 class SoAsciiTextP * pimpl; 82 friend class SoAsciiTextP; 83 84 float getWidth(const int idx, const float fontsize); 85 }; 86 87 #endif // !COIN_SOASCIITEXT_H 88