Beispiel #1
0
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
	}
Beispiel #4
0
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()));
}
Beispiel #5
0
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);
}
Beispiel #7
0
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);
}