00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef COIN_SOIMAGE_H
00021
#define COIN_SOIMAGE_H
00022
00023
#include <Inventor/nodes/SoSubNode.h>
00024
#include <Inventor/nodes/SoShape.h>
00025
#include <Inventor/fields/SoSFInt32.h>
00026
#include <Inventor/fields/SoSFEnum.h>
00027
#include <Inventor/fields/SoSFImage.h>
00028
#include <Inventor/fields/SoSFString.h>
00029
00030
class SoSensor;
00031
class SoFieldSensor;
00032
class SbImage;
00033
00034 class COIN_DLL_API SoImage :
public SoShape {
00035
typedef SoShape inherited;
00036
00037 SO_NODE_HEADER(SoImage);
00038
00039
public:
00040
static void initClass(
void);
00041 SoImage(
void);
00042
00043 enum VertAlignment {
00044 BOTTOM,
00045 HALF,
00046 TOP
00047 };
00048
00049 enum HorAlignment {
00050 LEFT,
00051 CENTER,
00052 RIGHT
00053 };
00054
00055
SoSFInt32 width;
00056
SoSFInt32 height;
00057
SoSFEnum vertAlignment;
00058
SoSFEnum horAlignment;
00059
SoSFImage image;
00060
SoSFString filename;
00061
00062
virtual void GLRender(
SoGLRenderAction * action);
00063
virtual void rayPick(
SoRayPickAction * action);
00064
virtual void getPrimitiveCount(
SoGetPrimitiveCountAction * action);
00065
00066
protected:
00067
virtual ~SoImage();
00068
00069
virtual void generatePrimitives(
SoAction * action);
00070
virtual void computeBBox(
SoAction * action,
SbBox3f & box,
SbVec3f & center);
00071
00072
virtual SbBool readInstance(
SoInput * in,
unsigned short flags);
00073
virtual void notify(
SoNotList * list);
00074
int getReadStatus(
void);
00075
void setReadStatus(SbBool flag);
00076
00077
private:
00078
SbVec2s getSize(
void) const;
00079 static
SbVec3f getNilpoint(
SoState *state);
00080
void getQuad(
SoState *state,
SbVec3f &v0,
SbVec3f &v1,
00081
SbVec3f &v2,
SbVec3f &v3);
00082
00083 const
unsigned char * getImage(
SbVec2s & size,
int & nc);
00084 SbBool loadFilename(
void);
00085 SbBool readstatus;
00086
SbImage * resizedimage;
00087 SbBool resizedimagevalid;
00088 class
SoFieldSensor * filenamesensor;
00089 SbBool transparency;
00090 SbBool testtransparency;
00091
void testTransparency(
void);
00092 static
void filenameSensorCB(
void *,
SoSensor *);
00093 };
00094
00095 #endif