16 #ifndef __IMG_TileDevice__
17 #define __IMG_TileDevice__
29 class IMG_TileInterface;
41 IMG_TILE_BOTTOM_FIRST = 0,
42 IMG_TILE_RANDOM_ORDER = 1,
43 IMG_TILE_TOP_FIRST = 2,
60 static bool isSpecialFileName(
const char *
filename);
65 static bool isNullDeviceName(
const char *
filename);
78 static void registerDevice(IMG_TileDeviceCreator creator,
81 static void unregisterDevice(
const char *
label);
102 virtual const char *className()
const = 0;
109 void setVisibleRegion(
int l,
int r,
int b,
int t);
115 void setRenderSize(
int rwidth,
int rheight);
119 { myDataWindow =
w; }
128 { myRenderWindow =
w; }
133 int tile_device,
int tile_height,
138 virtual int openMulti(
141 int tile_width,
int tile_height,
144 virtual void setWhitePoint(
fpreal white);
148 virtual void checkpoint();
152 { myRenderSourceName.harden(name); }
154 {
return myRenderSourceName; }
176 virtual void writeCustomTag(
const char *tagname,
int size,
177 const char *
const *
values);
181 const char *
const *
values)
183 writeCustomTag(
IMGtagName(tag_id), size, values);
210 virtual int writeTile(
const void *
data,
211 unsigned x0,
unsigned x1,
212 unsigned y0,
unsigned y1) = 0;
220 int floats_per_sample,
224 UT_ASSERT_MSG(0,
"Should be implemented by subclass in relevant cases!");
228 virtual void flush();
230 virtual int close(
bool keep_alive=
false) = 0;
234 virtual int unsafeFlush();
246 virtual bool getNextTile(
int &xl,
int &xr,
int &yb,
int &yt,
253 virtual bool getClickedTile(
int &tx,
int &ty,
float &radius)
const;
255 virtual void resetTileRequestor();
256 virtual int getTileMode()
const;
271 int xres()
const {
return myDisplayWindow.width(); }
272 int yres()
const {
return myDisplayWindow.height(); }
295 void setResolution(
int xres,
int yres,
296 int tilewidth,
int tileheight,
297 int tile_order = IMG_TILE_BOTTOM_FIRST);
306 void mapImageToTile(
int ix,
int iy,
int &tx,
int &ty);
307 void getTileBounds(
int tx,
int ty,
308 int &xl,
int &xr,
int &yb,
int &yt);
310 bool hasDataWindow(
int full_xres,
int full_yres)
const;
318 { myRandomAccess = tile_order; }
322 { myFileCount =
count; }
332 const
UT_DimRect &dataWindow()
const {
return myDataWindow; }
340 int myTileWidth, myTileHeight;
344 IMG_TILE_ORDER myRandomAccess;
346 int myClickedTileXY[2];
347 float myClickedRadius;
348 int myFilterX, myFilterY;
349 int myTileCountX, myTileCountY;
353 IMG_TileInterface *myTiles;
const UT_DimRect & displayWindow() const
GLboolean GLboolean GLboolean b
GT_API const UT_StringHolder filename
void setTileOrder(IMG_TILE_ORDER tile_order)
Specify the desired tile order.
virtual float getMouseClickRadius() const
int getDataHeight() const
const UT_DimRect & renderWindow() const
void writeKnownTag(IMG_TagType tag_id, int size, const char *const *values)
GLuint const GLchar * name
virtual bool getMouseClickPosition(int &x, int &y) const
GLenum GLsizei GLsizei GLint * values
virtual void setStyleSheets(UT_StringArray &)
GLubyte GLubyte GLubyte GLubyte w
#define UT_ASSERT_MSG(ZZ,...)
#define SYS_DEPRECATED_REPLACE(__V__, __R__)
int getTileCountY() const
virtual void terminateOnConnectionLost(bool)
virtual bool writeSamples(int nsamples, int floats_per_sample, const UT_Vector3T< int > *samples, const float *data)
void setDeviceRenderWindow(const UT_DimRect &w)
GLuint GLfloat GLfloat GLfloat x1
void setRenderSourceName(const char *name)
GLuint GLfloat GLfloat y0
GLuint GLsizei const GLchar * label
IMG_DataType * getDataTypes()
virtual bool isInteractive() const
GLuint GLfloat GLfloat GLfloat GLfloat y1
GLint GLsizei GLsizei height
DeviceRef newDevice(DeviceType type=DeviceType::Default)
A map of string to various well defined value types.
bool isRandomAccess() const
void setFileCount(int count)
In the open method, the sub-class should set the file count.
int getTileHeight() const
virtual bool wantsHoudiniPort() const
int getTileWidth() const
Query tile width parameters.
const char * getRenderSourceName() const
int getTileCountX() const
IMG_ColorModel * getColorModels()