1 #ifndef COIN_SOWWWINLINE_H 2 #define COIN_SOWWWINLINE_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/fields/SoSFString.h> 38 #include <Inventor/fields/SoSFVec3f.h> 39 #include <Inventor/fields/SoSFNode.h> 40 41 #ifndef COIN_INTERNAL 42 #include <Inventor/actions/SoCallbackAction.h> 43 #endif // !COIN_INTERNAL 44 45 class SbColor; 46 class SoGroup; 47 class SoWWWInlineP; 48 49 // ************************************************************************* 50 51 class SoWWWInline; 52 typedef void SoWWWInlineFetchURLCB(const SbString & url, void * userData, 53 SoWWWInline * node); 54 55 // ************************************************************************* 56 57 class COIN_DLL_API SoWWWInline : public SoNode { 58 typedef SoNode inherited; 59 60 SO_NODE_HEADER(SoWWWInline); 61 62 public: 63 static void initClass(void); 64 SoWWWInline(void); 65 66 SoSFString name; 67 SoSFVec3f bboxCenter; 68 SoSFVec3f bboxSize; 69 SoSFNode alternateRep; 70 71 enum BboxVisibility { 72 NEVER, 73 UNTIL_LOADED, 74 ALWAYS 75 }; 76 77 void setFullURLName(const SbString & url); 78 const SbString & getFullURLName(void); 79 80 SoGroup * copyChildren(void) const; 81 82 void requestURLData(void); 83 SbBool isURLDataRequested(void) const; 84 SbBool isURLDataHere(void) const; 85 void cancelURLDataRequest(void); 86 87 void setChildData(SoNode * urldata); 88 SoNode * getChildData(void) const; 89 90 virtual SoChildList * getChildren(void) const; 91 92 static void setFetchURLCallBack(SoWWWInlineFetchURLCB * f, void * userdata); 93 94 static void setBoundingBoxVisibility(BboxVisibility b); 95 static BboxVisibility getBoundingBoxVisibility(void); 96 97 static void setBoundingBoxColor(SbColor & c); 98 static const SbColor & getBoundingBoxColor(void); 99 100 static void setReadAsSoFile(SbBool onoff); 101 static SbBool getReadAsSoFile(void); 102 103 virtual void doAction(SoAction * action); 104 virtual void doActionOnKidsOrBox(SoAction * action); 105 virtual void callback(SoCallbackAction * action); 106 virtual void GLRender(SoGLRenderAction * action); 107 virtual void getBoundingBox(SoGetBoundingBoxAction * action); 108 virtual void getMatrix(SoGetMatrixAction * action); 109 virtual void handleEvent(SoHandleEventAction * action); 110 virtual void search(SoSearchAction * action); 111 virtual void pick(SoPickAction * action); 112 virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action); 113 virtual void audioRender(SoAudioRenderAction * action); 114 115 protected: 116 virtual ~SoWWWInline(); 117 118 virtual void addBoundingBoxChild(SbVec3f center, SbVec3f size); 119 virtual SbBool readInstance(SoInput * in, unsigned short flags); 120 virtual void copyContents(const SoFieldContainer * fromfC, 121 SbBool copyconnections); 122 123 private: 124 friend class SoWWWInlineP; 125 static SoWWWInlineFetchURLCB * fetchurlcb; 126 static void * fetchurlcbdata; 127 static SbBool readassofile; 128 static SbColor * bboxcolor; 129 static BboxVisibility bboxvisibility; 130 131 static void cleanup(void); 132 133 SoWWWInlineP * pimpl; 134 }; 135 136 #endif // !COIN_SOWWWINLINE_H 137