|
|
@ -38,7 +38,6 @@
|
|
|
|
#define _ARRAY_DEFINE
|
|
|
|
#define _ARRAY_DEFINE
|
|
|
|
#include "shArrayBase.h"
|
|
|
|
#include "shArrayBase.h"
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef SH_NO_IMAGE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-----------------------------------------------------------
|
|
|
|
/*-----------------------------------------------------------
|
|
|
|
* Prepares the proper pixel pack/unpack info for the given
|
|
|
|
* Prepares the proper pixel pack/unpack info for the given
|
|
|
@ -446,8 +445,6 @@ void shLoadColor(SHColor *c, const void *data, SHImageFormatDesc *f)
|
|
|
|
if (f->rmask == 0x0) { c->r = 1.0f; c->g = 1.0f; c->b = 1.0f; }
|
|
|
|
if (f->rmask == 0x0) { c->r = 1.0f; c->g = 1.0f; c->b = 1.0f; }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------
|
|
|
|
/*----------------------------------------------
|
|
|
|
* Color and Image constructors and destructors
|
|
|
|
* Color and Image constructors and destructors
|
|
|
@ -469,11 +466,7 @@ void SHImage_ctor(SHImage *i)
|
|
|
|
i->data = NULL;
|
|
|
|
i->data = NULL;
|
|
|
|
i->width = 0;
|
|
|
|
i->width = 0;
|
|
|
|
i->height = 0;
|
|
|
|
i->height = 0;
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
glGenTextures(1, &i->texture);
|
|
|
|
glGenTextures(1, &i->texture);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SHImage_dtor(SHImage *i)
|
|
|
|
void SHImage_dtor(SHImage *i)
|
|
|
@ -481,15 +474,10 @@ void SHImage_dtor(SHImage *i)
|
|
|
|
if (i->data != NULL)
|
|
|
|
if (i->data != NULL)
|
|
|
|
free(i->data);
|
|
|
|
free(i->data);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
if (glIsTexture(i->texture))
|
|
|
|
if (glIsTexture(i->texture))
|
|
|
|
glDeleteTextures(1, &i->texture);
|
|
|
|
glDeleteTextures(1, &i->texture);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef SH_NO_IMAGE
|
|
|
|
|
|
|
|
/*--------------------------------------------------------
|
|
|
|
/*--------------------------------------------------------
|
|
|
|
* Finds appropriate OpenGL texture size for the size of
|
|
|
|
* Finds appropriate OpenGL texture size for the size of
|
|
|
|
* the given image
|
|
|
|
* the given image
|
|
|
@ -531,7 +519,6 @@ void shUpdateImageTexture(SHImage *i, VGContext *c)
|
|
|
|
i->texwidth, i->texheight, 0,
|
|
|
|
i->texwidth, i->texheight, 0,
|
|
|
|
i->fd.glformat, i->fd.gltype, i->data);
|
|
|
|
i->fd.glformat, i->fd.gltype, i->data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------
|
|
|
|
/*----------------------------------------------------------
|
|
|
|
* Creates a new image object and returns the handle to it
|
|
|
|
* Creates a new image object and returns the handle to it
|
|
|
@ -541,10 +528,6 @@ VG_API_CALL VGImage vgCreateImage(VGImageFormat format,
|
|
|
|
VGint width, VGint height,
|
|
|
|
VGint width, VGint height,
|
|
|
|
VGbitfield allowedQuality)
|
|
|
|
VGbitfield allowedQuality)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
return VG_INVALID_HANDLE;
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHImage *i = NULL;
|
|
|
|
SHImage *i = NULL;
|
|
|
|
SHImageFormatDesc fd;
|
|
|
|
SHImageFormatDesc fd;
|
|
|
|
VG_GETCONTEXT(VG_INVALID_HANDLE);
|
|
|
|
VG_GETCONTEXT(VG_INVALID_HANDLE);
|
|
|
@ -599,14 +582,10 @@ VG_API_CALL VGImage vgCreateImage(VGImageFormat format,
|
|
|
|
shImageArrayPushBack(&context->images, i);
|
|
|
|
shImageArrayPushBack(&context->images, i);
|
|
|
|
|
|
|
|
|
|
|
|
VG_RETURN((VGImage)i);
|
|
|
|
VG_RETURN((VGImage)i);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
VG_API_CALL void vgDestroyImage(VGImage image)
|
|
|
|
VG_API_CALL void vgDestroyImage(VGImage image)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHint index;
|
|
|
|
SHint index;
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
|
|
|
|
|
|
|
|
@ -619,7 +598,6 @@ VG_API_CALL void vgDestroyImage(VGImage image)
|
|
|
|
shImageArrayRemoveAt(&context->images, index);
|
|
|
|
shImageArrayRemoveAt(&context->images, index);
|
|
|
|
|
|
|
|
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*---------------------------------------------------
|
|
|
|
/*---------------------------------------------------
|
|
|
@ -630,9 +608,6 @@ VG_API_CALL void vgDestroyImage(VGImage image)
|
|
|
|
VG_API_CALL void vgClearImage(VGImage image,
|
|
|
|
VG_API_CALL void vgClearImage(VGImage image,
|
|
|
|
VGint x, VGint y, VGint width, VGint height)
|
|
|
|
VGint x, VGint y, VGint width, VGint height)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHImage *i;
|
|
|
|
SHImage *i;
|
|
|
|
SHColor clear;
|
|
|
|
SHColor clear;
|
|
|
|
SHuint8 *data;
|
|
|
|
SHuint8 *data;
|
|
|
@ -674,11 +649,8 @@ VG_API_CALL void vgClearImage(VGImage image,
|
|
|
|
|
|
|
|
|
|
|
|
shUpdateImageTexture(i, context);
|
|
|
|
shUpdateImageTexture(i, context);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef SH_NO_IMAGE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*------------------------------------------------------------
|
|
|
|
/*------------------------------------------------------------
|
|
|
|
* Generic function for copying a rectangle area of pixels
|
|
|
|
* Generic function for copying a rectangle area of pixels
|
|
|
|
* of size (width,height) among two data buffers. The size of
|
|
|
|
* of size (width,height) among two data buffers. The size of
|
|
|
@ -789,8 +761,6 @@ void shCopyPixels(SHuint8 *dst, VGImageFormat dstFormat, SHint dstStride,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*---------------------------------------------------------
|
|
|
|
/*---------------------------------------------------------
|
|
|
|
* Copies a rectangle area of pixels of size (width,height)
|
|
|
|
* Copies a rectangle area of pixels of size (width,height)
|
|
|
|
* from given data buffer to image surface at destination
|
|
|
|
* from given data buffer to image surface at destination
|
|
|
@ -802,9 +772,6 @@ VG_API_CALL void vgImageSubData(VGImage image,
|
|
|
|
VGImageFormat dataFormat,
|
|
|
|
VGImageFormat dataFormat,
|
|
|
|
VGint x, VGint y, VGint width, VGint height)
|
|
|
|
VGint x, VGint y, VGint width, VGint height)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHImage *i;
|
|
|
|
SHImage *i;
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
|
|
|
|
|
|
|
|
@ -836,7 +803,6 @@ VG_API_CALL void vgImageSubData(VGImage image,
|
|
|
|
|
|
|
|
|
|
|
|
shUpdateImageTexture(i, context);
|
|
|
|
shUpdateImageTexture(i, context);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*---------------------------------------------------------
|
|
|
|
/*---------------------------------------------------------
|
|
|
@ -851,9 +817,6 @@ VG_API_CALL void vgGetImageSubData(VGImage image,
|
|
|
|
VGint x, VGint y,
|
|
|
|
VGint x, VGint y,
|
|
|
|
VGint width, VGint height)
|
|
|
|
VGint width, VGint height)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHImage *i;
|
|
|
|
SHImage *i;
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
|
|
|
|
|
|
|
|
@ -884,7 +847,6 @@ VG_API_CALL void vgGetImageSubData(VGImage image,
|
|
|
|
0,0,x,x,width,height);
|
|
|
|
0,0,x,x,width,height);
|
|
|
|
|
|
|
|
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------
|
|
|
|
/*----------------------------------------------------------
|
|
|
@ -898,9 +860,6 @@ VG_API_CALL void vgCopyImage(VGImage dst, VGint dx, VGint dy,
|
|
|
|
VGint width, VGint height,
|
|
|
|
VGint width, VGint height,
|
|
|
|
VGboolean dither)
|
|
|
|
VGboolean dither)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHImage *s, *d;
|
|
|
|
SHImage *s, *d;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
|
|
|
|
|
|
|
@ -941,7 +900,6 @@ VG_API_CALL void vgCopyImage(VGImage dst, VGint dx, VGint dy,
|
|
|
|
|
|
|
|
|
|
|
|
shUpdateImageTexture(d, context);
|
|
|
|
shUpdateImageTexture(d, context);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*---------------------------------------------------------
|
|
|
|
/*---------------------------------------------------------
|
|
|
@ -954,9 +912,6 @@ VG_API_CALL void vgSetPixels(VGint dx, VGint dy,
|
|
|
|
VGImage src, VGint sx, VGint sy,
|
|
|
|
VGImage src, VGint sx, VGint sy,
|
|
|
|
VGint width, VGint height)
|
|
|
|
VGint width, VGint height)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHImage *i;
|
|
|
|
SHImage *i;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
@ -1001,7 +956,6 @@ VG_API_CALL void vgSetPixels(VGint dx, VGint dy,
|
|
|
|
free(pixels);
|
|
|
|
free(pixels);
|
|
|
|
|
|
|
|
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*---------------------------------------------------------
|
|
|
|
/*---------------------------------------------------------
|
|
|
@ -1015,9 +969,6 @@ VG_API_CALL void vgWritePixels(const void * data, VGint dataStride,
|
|
|
|
VGint dx, VGint dy,
|
|
|
|
VGint dx, VGint dy,
|
|
|
|
VGint width, VGint height)
|
|
|
|
VGint width, VGint height)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
|
|
|
|
|
|
|
|
@ -1067,7 +1018,6 @@ VG_API_CALL void vgWritePixels(const void * data, VGint dataStride,
|
|
|
|
free(pixels);
|
|
|
|
free(pixels);
|
|
|
|
|
|
|
|
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*-----------------------------------------------------------
|
|
|
|
/*-----------------------------------------------------------
|
|
|
@ -1080,9 +1030,6 @@ VG_API_CALL void vgGetPixels(VGImage dst, VGint dx, VGint dy,
|
|
|
|
VGint sx, VGint sy,
|
|
|
|
VGint sx, VGint sy,
|
|
|
|
VGint width, VGint height)
|
|
|
|
VGint width, VGint height)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHImage *i;
|
|
|
|
SHImage *i;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
@ -1121,7 +1068,6 @@ VG_API_CALL void vgGetPixels(VGImage dst, VGint dx, VGint dy,
|
|
|
|
|
|
|
|
|
|
|
|
shUpdateImageTexture(i, context);
|
|
|
|
shUpdateImageTexture(i, context);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*-----------------------------------------------------------
|
|
|
|
/*-----------------------------------------------------------
|
|
|
@ -1135,9 +1081,6 @@ VG_API_CALL void vgReadPixels(void * data, VGint dataStride,
|
|
|
|
VGint sx, VGint sy,
|
|
|
|
VGint sx, VGint sy,
|
|
|
|
VGint width, VGint height)
|
|
|
|
VGint width, VGint height)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#ifdef SH_NO_IMAGE
|
|
|
|
|
|
|
|
printf("ShaderVG: images not supported!");
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHuint8 *pixels;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
|
SHImageFormatDesc winfd;
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
|
VG_GETCONTEXT(VG_NO_RETVAL);
|
|
|
@ -1179,7 +1122,6 @@ VG_API_CALL void vgReadPixels(void * data, VGint dataStride,
|
|
|
|
free(pixels);
|
|
|
|
free(pixels);
|
|
|
|
|
|
|
|
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
VG_RETURN(VG_NO_RETVAL);
|
|
|
|
#endif // SH_NO_IMAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------
|
|
|
|
/*----------------------------------------------------------
|
|
|
|