bool RenderSVGResourceMasker::applyResource(RenderObject* object, RenderStyle*, GraphicsContext*& context, unsigned short resourceMode) { ASSERT(object); ASSERT(context); #ifndef NDEBUG ASSERT(resourceMode == ApplyToDefaultMode); #else UNUSED_PARAM(resourceMode); #endif if (!m_masker.contains(object)) m_masker.set(object, new MaskerData); MaskerData* maskerData = m_masker.get(object); if (!maskerData->maskImage && !maskerData->emptyMask) { SVGMaskElement* maskElement = static_cast<SVGMaskElement*>(node()); if (!maskElement) return false; createMaskImage(maskerData, maskElement, object); } if (!maskerData->maskImage) return false; context->clipToImageBuffer(maskerData->maskRect, maskerData->maskImage.get()); return true; }
void Java_java_awt_Toolkit_imgSetRGBPels ( JNIEnv* env, jclass clazz, Image * img, jint x, jint y, jint w, jint h, jintArray rgbPels, jint off, jint scan) { register int row, col; COLORREF pix; jboolean isCopy; jint *rgbs = env->GetIntArrayElements( rgbPels, &isCopy); jint *rgb = rgbs + off; int maxCol = x + w; int maxRow = y + h; for ( row = y; row < maxRow; row++) { for ( col = x; col < maxCol; col++) { pix = rgb[col + row * scan]; if ( (pix & 0xff000000) == 0xff000000 ) { PIXEL( img->dc, col, row, pix); } else { if ( !img->mask ) createMaskImage( X, img); PIXEL( img->dcMask, col, row, 0x00ffffff); PIXEL( img->dc, col, row, 0); } } } env->ReleaseIntArrayElements( rgbPels, rgbs, JNI_ABORT); }
void* Java_java_awt_Toolkit_imgCreateScaledImage ( JNIEnv* env, jclass clazz, Image* img, int width, int height ) { Image *si = createImage( width, height); si->bmp = CreateCompatibleBitmap( X->display, width, height); SelectObject( si->dc, si->bmp); StretchBlt( si->dc, 0, 0, width, height, img->dc, 0, 0, img->width, img->height, SRCCOPY); if ( img->mask) { createMaskImage( X, si); StretchBlt( si->dcMask, 0, 0, width, height, img->dcMask, 0, 0, img->width, img->height, SRCCOPY); } return si; }
void Java_java_awt_Toolkit_imgSetIdxPels ( JNIEnv* env, jclass clazz, Image * img, jint x, jint y, jint w, jint h, jintArray clrMap, jbyteArray idxPels, jint trans, jint off, jint scan) { register int row, col; COLORREF pix; jboolean isCopy; jint *clr = env->GetIntArrayElements( clrMap, &isCopy); jbyte *pel = env->GetByteArrayElements( idxPels, &isCopy); unsigned char *idx = (unsigned char*)(pel + off); int maxCol = x + w; int maxRow = y + h; unsigned char curPel; if ( (trans >= 0) && !img->mask) createMaskImage( X, img); for ( row = y; row < maxRow; row++) { for ( col = x; col < maxCol; col++) { curPel = idx[col + row * scan]; pix = ColorJ2N( clr[curPel] ); if ( trans >= 0 ) { if ( curPel == trans ){ pix = 0; PIXEL( img->dcMask, col, row, 0x00ffffff); } } PIXEL( img->dc, col, row, pix); } } env->ReleaseIntArrayElements( clrMap, clr, JNI_ABORT); env->ReleaseByteArrayElements( idxPels, pel, JNI_ABORT); }