const QTransform QNanoPainter::currentTransform() const { float *xform = new float[6]; nvgCurrentTransform(nvgCtx(), xform); QTransform t(xform[0], xform[1], xform[2], xform[3], xform[4], xform[5]); delete [] xform; return t; }
vec_t world2screen(vec_t v) { #ifdef GRAPHICS float transform[6]; nvgCurrentTransform(vg, transform); vec_t ret; nvgTransformPoint(&ret.x, &ret.y, transform, v.x, v.y); return ret; #else return v; #endif }
vec_t screen2world(vec_t v) { #ifdef GRAPHICS float transform[6], itransform[6]; nvgCurrentTransform(vg, transform); nvgTransformInverse(itransform, transform); vec_t ret; nvgTransformPoint(&ret.x, &ret.y, itransform, v.x, v.y); return ret; #else return v; #endif }
AffineTransform GraphicsContext::getCTM() const { float xform[6]; nvgCurrentTransform(platformContext()->canvas(), xform); return AffineTransform(xform[0], xform[1], xform[2], xform[3], xform[4], xform[5]); // const SkMatrix& m = platformContext()->canvas()->getTotalMatrix(); // return AffineTransform(SkScalarToDouble(m.getScaleX()), // SkScalarToDouble(m.getSkewY()), // SkScalarToDouble(m.getSkewX()), // SkScalarToDouble(m.getScaleY()), // SkScalarToDouble(m.getTranslateX()), // SkScalarToDouble(m.getTranslateY())); }
void VectorRenderer::fillTexture(TextureID id, Loom2D::Matrix transform, bool repeat, bool smooth, float alpha) { TextureInfo *tinfo = Texture::getTextureInfo(id); // Setup flags int flags = NVG_IMAGE_NODELETE; if (tinfo->mipmaps) flags |= NVG_IMAGE_GENERATE_MIPMAPS; if (repeat) { flags |= NVG_IMAGE_REPEATX; flags |= NVG_IMAGE_REPEATY; } if (smooth) flags |= NVG_IMAGE_BILINEAR; // Key based on id and flags utIntHashKey key = utIntHashKey(utIntHashKey(id).hash() ^ utIntHashKey(flags).hash()); int *stored = imageLookup.get(key); int nvgImage; if (stored == NULL) { nvgImage = nvglCreateImageFromHandle(nvg, tinfo->getHandleID(), tinfo->width, tinfo->height, flags); imageLookup.insert(key, nvgImage); } else { nvgImage = *stored; } // Save transform float xform[6]; nvgCurrentTransform(nvg, xform); // Apply fill transform nvgTransform(nvg, (float)transform.a, (float)transform.b, (float)transform.c, (float)transform.d, (float)transform.tx, (float)transform.ty); // Set paint nvgFillPaint(nvg, nvgImagePattern(nvg, 0.f, 0.f, (float) tinfo->width, (float) tinfo->height, 0.f, nvgImage, alpha)); // Restore transform nvgSetTransform(nvg, xform); }
JNIEXPORT void JNICALL Java_org_lwjgl_nanovg_NanoVG_nnvgCurrentTransform__JJ(JNIEnv *__env, jclass clazz, jlong ctxAddress, jlong xformAddress) { NVGcontext *ctx = (NVGcontext *)(intptr_t)ctxAddress; float *xform = (float *)(intptr_t)xformAddress; UNUSED_PARAMS(__env, clazz) nvgCurrentTransform(ctx, xform); }
JNIEXPORT void JNICALL Java_firststep_internal_NVG__1_1getTransform (JNIEnv *e, jclass c, jlong ctx, jobject jdest) { float* dest = (float*)getBuffPtr(e,jdest); nvgCurrentTransform((NVGcontext*)ctx, dest); }