Lines Matching refs:rasterP

125 static int checkChannelOffsets(RasterS_t *rasterP, int dataArrayLength) {
127 switch (rasterP->rasterType) {
129 if (!SAFE_TO_MULT(rasterP->height, rasterP->scanlineStride)) {
132 if (!SAFE_TO_MULT(rasterP->width, rasterP->pixelStride)) {
136 lastScanOffset = (rasterP->height - 1) * rasterP->scanlineStride;
137 lastPixelOffset = (rasterP->width - 1) * rasterP->pixelStride;
146 for (i = 0; i < rasterP->numDataElements; i++) {
147 int off = rasterP->chanOffsets[i];
175 * rasterP structure.
182 int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
191 rasterP->jraster = jraster;
192 rasterP->width = (*env)->GetIntField(env, jraster, g_RasterWidthID);
193 rasterP->height = (*env)->GetIntField(env, jraster, g_RasterHeightID);
194 rasterP->numDataElements = (*env)->GetIntField(env, jraster,
196 rasterP->numBands = (*env)->GetIntField(env, jraster,
199 rasterP->baseOriginX = (*env)->GetIntField(env, jraster,
201 rasterP->baseOriginY = (*env)->GetIntField(env, jraster,
203 rasterP->minX = (*env)->GetIntField(env, jraster, g_RasterMinXID);
204 rasterP->minY = (*env)->GetIntField(env, jraster, g_RasterMinYID);
206 rasterP->jsampleModel = (*env)->GetObjectField(env, jraster,
209 if (JNU_IsNull(env, rasterP->jsampleModel)) {
215 rasterP->rasterType = UNKNOWN_RASTER_TYPE;
217 if (rasterP->numBands <= 0 ||
218 rasterP->numBands > MAX_NUMBANDS)
227 rasterP->sppsm.isUsed = 0;
229 if ((*env)->IsInstanceOf(env, rasterP->jsampleModel,
233 rasterP->sppsm.isUsed = 1;
235 rasterP->sppsm.maxBitSize = (*env)->GetIntField(env,
236 rasterP->jsampleModel,
238 jmask = (*env)->GetObjectField(env, rasterP->jsampleModel,
240 joffs = (*env)->GetObjectField(env, rasterP->jsampleModel,
242 jnbits = (*env)->GetObjectField(env, rasterP->jsampleModel,
245 rasterP->sppsm.maxBitSize < 0)
251 rasterP->numBands, rasterP->sppsm.maskArray);
253 rasterP->numBands, rasterP->sppsm.offsets);
255 rasterP->numBands, rasterP->sppsm.nBits);
258 rasterP->baseRasterWidth = (*env)->GetIntField(env, rasterP->jsampleModel,
260 rasterP->baseRasterHeight = (*env)->GetIntField(env,
261 rasterP->jsampleModel,
266 rasterP->jdata = (*env)->GetObjectField(env, jraster, g_ICRdataID);
267 rasterP->dataType = INT_DATA_TYPE;
268 rasterP->dataSize = 4;
269 rasterP->dataIsShared = TRUE;
270 rasterP->rasterType = COMPONENT_RASTER_TYPE;
271 rasterP->type = (*env)->GetIntField(env, jraster, g_ICRtypeID);
272 rasterP->scanlineStride = (*env)->GetIntField(env, jraster, g_ICRscanstrID);
273 rasterP->pixelStride = (*env)->GetIntField(env, jraster, g_ICRpixstrID);
278 rasterP->jdata = (*env)->GetObjectField(env, jraster, g_BCRdataID);
279 rasterP->dataType = BYTE_DATA_TYPE;
280 rasterP->dataSize = 1;
281 rasterP->dataIsShared = TRUE;
282 rasterP->rasterType = COMPONENT_RASTER_TYPE;
283 rasterP->type = (*env)->GetIntField(env, jraster, g_BCRtypeID);
284 rasterP->scanlineStride = (*env)->GetIntField(env, jraster, g_BCRscanstrID);
285 rasterP->pixelStride = (*env)->GetIntField(env, jraster, g_BCRpixstrID);
290 rasterP->jdata = (*env)->GetObjectField(env, jraster, g_SCRdataID);
291 rasterP->dataType = SHORT_DATA_TYPE;
292 rasterP->dataSize = 2;
293 rasterP->dataIsShared = TRUE;
294 rasterP->rasterType = COMPONENT_RASTER_TYPE;
295 rasterP->type = (*env)->GetIntField(env, jraster, g_SCRtypeID);
296 rasterP->scanlineStride = (*env)->GetIntField(env, jraster, g_SCRscanstrID);
297 rasterP->pixelStride = (*env)->GetIntField(env, jraster, g_SCRpixstrID);
302 rasterP->rasterType = PACKED_RASTER_TYPE;
303 rasterP->dataType = BYTE_DATA_TYPE;
304 rasterP->dataSize = 1;
305 rasterP->scanlineStride = (*env)->GetIntField(env, jraster, g_BPRscanstrID);
306 rasterP->pixelStride = (*env)->GetIntField(env, jraster, g_BPRpixstrID);
307 rasterP->jdata = (*env)->GetObjectField(env, jraster, g_BPRdataID);
308 rasterP->type = (*env)->GetIntField(env, jraster, g_BPRtypeID);
309 rasterP->chanOffsets = NULL;
310 if (SAFE_TO_ALLOC_2(rasterP->numDataElements, sizeof(jint))) {
311 rasterP->chanOffsets =
312 (jint *)malloc(rasterP->numDataElements * sizeof(jint));
314 if (rasterP->chanOffsets == NULL) {
319 rasterP->chanOffsets[0] = (*env)->GetIntField(env, jraster, g_BPRdataBitOffsetID);
320 rasterP->dataType = BYTE_DATA_TYPE;
323 rasterP->type = sun_awt_image_IntegerComponentRaster_TYPE_CUSTOM;
324 rasterP->dataType = UNKNOWN_DATA_TYPE;
325 rasterP->rasterType = UNKNOWN_RASTER_TYPE;
326 rasterP->chanOffsets = NULL;
332 if (rasterP->width <= 0 || rasterP->height <= 0 ||
333 rasterP->pixelStride <= 0 || rasterP->scanlineStride <= 0)
340 switch (rasterP->rasterType) {
344 rasterP->chanOffsets = NULL;
345 if (SAFE_TO_ALLOC_2(rasterP->numDataElements, sizeof(jint))) {
346 rasterP->chanOffsets =
347 (jint *)malloc(rasterP->numDataElements * sizeof(jint));
349 if (rasterP->chanOffsets == NULL) {
354 (*env)->GetIntArrayRegion(env, joffs, 0, rasterP->numDataElements,
355 rasterP->chanOffsets);
356 if (rasterP->jdata == NULL) {
361 if (!checkChannelOffsets(rasterP, (*env)->GetArrayLength(env, rasterP->jdata))) {
372 if (rasterP->dataType > UNKNOWN_DATA_TYPE && /* data type has been recognized */
373 rasterP->sppsm.maxBitSize > 0 && /* raster has SPP sample model */
374 rasterP->sppsm.maxBitSize > (rasterP->dataSize * 8))
382 fprintf(stderr,"Width : %d\n",rasterP->width);
383 fprintf(stderr,"Height : %d\n",rasterP->height);
384 fprintf(stderr,"X : %d\n",rasterP->x);
385 fprintf(stderr,"Y : %d\n",rasterP->y);
386 fprintf(stderr,"numC : %d\n",rasterP->numDataElements);
387 fprintf(stderr,"SS : %d\n",rasterP->scanlineStride);
388 fprintf(stderr,"PS : %d\n",rasterP->pixelStride);
389 fprintf(stderr,"CO : %d\n",rasterP->chanOffsets);
390 fprintf(stderr,"shared?: %d\n",rasterP->dataIsShared);
391 fprintf(stderr,"RasterT: %d\n",rasterP->rasterType);
392 fprintf(stderr,"DataT : %d\n",rasterP->dataType);
570 void awt_freeParsedRaster(RasterS_t *rasterP, int freeRasterP) {
571 if (rasterP->chanOffsets) {
572 free((void *) rasterP->chanOffsets);
576 free((void *) rasterP);
601 RasterS_t *rasterP = &imageP->raster;
606 if (cmodelP->numComponents != rasterP->numBands) {
628 hintP->channelOffset = rasterP->chanOffsets[0];
630 hintP->dataOffset = hintP->channelOffset*rasterP->dataSize;
631 hintP->sStride = rasterP->scanlineStride*rasterP->dataSize;
632 hintP->pStride = rasterP->pixelStride*rasterP->dataSize;
640 hintP->channelOffset = rasterP->chanOffsets[0];
643 hintP->channelOffset = rasterP->chanOffsets[hintP->numChans-1];
645 hintP->dataOffset = hintP->channelOffset*rasterP->dataSize;
646 hintP->sStride = rasterP->scanlineStride*rasterP->dataSize;
647 hintP->pStride = rasterP->pixelStride*rasterP->dataSize;
657 hintP->channelOffset = rasterP->chanOffsets[0];
658 hintP->dataOffset = hintP->channelOffset*rasterP->dataSize;
659 hintP->sStride = rasterP->scanlineStride*rasterP->dataSize;
660 hintP->pStride = rasterP->pixelStride*rasterP->dataSize;
661 switch(rasterP->dataType ) {
663 if (rasterP->rasterType == PACKED_RASTER_TYPE) {
688 int low = rasterP->chanOffsets[0];
692 if (rasterP->chanOffsets[i] < low) {
693 low = rasterP->chanOffsets[i];
697 diff = rasterP->chanOffsets[i]-low;
706 else if (diff >= rasterP->width) {
712 hintP->dataOffset = low*rasterP->dataSize;
713 hintP->sStride = rasterP->scanlineStride*rasterP->dataSize;
714 hintP->pStride = rasterP->pixelStride*rasterP->dataSize;
715 switch(rasterP->dataType) {
729 hintP->colorOrder[rasterP->chanOffsets[i]-low] = i;
733 int bandSize = rasterP->width*rasterP->height;
737 hintP->colorOrder[(rasterP->chanOffsets[i]-low)%bandSize] = i;
752 if (!rasterP->sppsm.isUsed ||
753 rasterP->numBands != cmodelP->numComponents)
765 else if (rasterP->sppsm.offsets != NULL) {
766 for (i=0; i < rasterP->numBands; i++) {
767 if (!(rasterP->sppsm.offsets[i] % 8)) {
773 hintP->colorOrder[i] = rasterP->sppsm.offsets[i]>>3;
778 hintP->channelOffset = rasterP->chanOffsets[0];
779 hintP->dataOffset = hintP->channelOffset*rasterP->dataSize;
780 hintP->sStride = rasterP->scanlineStride*rasterP->dataSize;
781 hintP->pStride = rasterP->pixelStride*rasterP->dataSize;
783 switch(rasterP->dataType) {
817 int awt_getPixelByte(JNIEnv *env, int band, RasterS_t *rasterP,
819 int w = rasterP->width;
820 int h = rasterP->height;
821 int numBands = rasterP->numBands;
832 jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
833 jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
835 jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);
911 int awt_setPixelByte(JNIEnv *env, int band, RasterS_t *rasterP,
913 int w = rasterP->width;
914 int h = rasterP->height;
915 int numBands = rasterP->numBands;
926 jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
927 jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
930 jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);
999 int awt_getPixelShort(JNIEnv *env, int band, RasterS_t *rasterP,
1001 int w = rasterP->width;
1002 int h = rasterP->height;
1003 int numBands = rasterP->numBands;
1014 jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
1015 jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
1017 jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);
1085 int awt_setPixelShort(JNIEnv *env, int band, RasterS_t *rasterP,
1087 int w = rasterP->width;
1088 int h = rasterP->height;
1089 int numBands = rasterP->numBands;
1100 jsm = (*env)->GetObjectField(env, rasterP->jraster, g_RasterSampleModelID);
1101 jdatabuffer = (*env)->GetObjectField(env, rasterP->jraster,
1108 jdata = (*env)->NewIntArray(env, maxBytes*rasterP->numBands*maxLines);