@Override protected void render(InternalTransform xform) { xform.translate(originX, originY); xform.transform(pos.set(-originX, -originY), pos); xform.transform(size.set(width, height), size); xform.translate(-originX, -originY); ctx.startClipped((int) pos.x, (int) pos.y, (int) Math.abs(size.x), (int) Math.abs(size.y)); try { super.render(xform); } finally { ctx.endClipped(); } } }
@Override public void paint(InternalTransform curTransform, int curTint, GLShader curShader) { if (!visible()) return; InternalTransform xform = localTransform(curTransform); surface.topTransform().set(xform); if (tint != Tint.NOOP_TINT) curTint = Tint.combine(curTint, tint); surface.setTint(curTint); surface.setShader((shader == null) ? curShader : shader); render(xform); surface.setShader(null); // TODO: restore tint? }