modules/graphics/src/main/java/com/sun/javafx/tk/quantum/UploadingPainter.java

Print this page

        

*** 44,54 **** // resolveRTT is a temporary render target to "resolve" a msaa render buffer // into a normal color render target. private RTTexture resolveRTT = null; private QueuedPixelSource pixelSource = new QueuedPixelSource(true); ! private float penScale; UploadingPainter(GlassScene view) { super(view); } --- 44,54 ---- // resolveRTT is a temporary render target to "resolve" a msaa render buffer // into a normal color render target. private RTTexture resolveRTT = null; private QueuedPixelSource pixelSource = new QueuedPixelSource(true); ! private float penScaleX, penScaleY; UploadingPainter(GlassScene view) { super(view); }
*** 62,73 **** resolveRTT = null; } } @Override ! public float getPixelScaleFactor() { ! return sceneState.getRenderScale(); } @Override public void run() { renderLock.lock(); --- 62,78 ---- resolveRTT = null; } } @Override ! public float getPixelScaleFactorX() { ! return sceneState.getRenderScaleX(); ! } ! ! @Override ! public float getPixelScaleFactorY() { ! return sceneState.getRenderScaleY(); } @Override public void run() { renderLock.lock();
*** 86,104 **** } if (factory == null || !factory.isDeviceReady()) { return; } ! float scale = getPixelScaleFactor(); int bufWidth = sceneState.getRenderWidth(); int bufHeight = sceneState.getRenderHeight(); // Repaint everything on pen scale or view size change because // texture contents are no longer correct. // Repaint everything on new texture dimensions because otherwise // our upload logic below may fail with index out of bounds. ! boolean needsReset = (penScale != scale || penWidth != viewWidth || penHeight != viewHeight || rttexture == null || rttexture.getContentWidth() != bufWidth || rttexture.getContentHeight() != bufHeight); --- 91,111 ---- } if (factory == null || !factory.isDeviceReady()) { return; } ! float scalex = getPixelScaleFactorX(); ! float scaley = getPixelScaleFactorY(); int bufWidth = sceneState.getRenderWidth(); int bufHeight = sceneState.getRenderHeight(); // Repaint everything on pen scale or view size change because // texture contents are no longer correct. // Repaint everything on new texture dimensions because otherwise // our upload logic below may fail with index out of bounds. ! boolean needsReset = (penScaleX != scalex || ! penScaleY != scaley || penWidth != viewWidth || penHeight != viewHeight || rttexture == null || rttexture.getContentWidth() != bufWidth || rttexture.getContentHeight() != bufHeight);
*** 117,152 **** rttexture = factory.createRTTexture(bufWidth, bufHeight, WrapMode.CLAMP_NOT_NEEDED, sceneState.isMSAA()); if (rttexture == null) { return; } ! penScale = scale; penWidth = viewWidth; penHeight = viewHeight; freshBackBuffer = true; } Graphics g = rttexture.createGraphics(); if (g == null) { disposeRTTexture(); sceneState.getScene().entireSceneNeedsRepaint(); return; } ! g.scale(scale, scale); paintImpl(g); freshBackBuffer = false; int outWidth = sceneState.getOutputWidth(); int outHeight = sceneState.getOutputHeight(); ! float outScale = sceneState.getOutputScale(); RTTexture rtt; if (rttexture.isMSAA() || outWidth != bufWidth || outHeight != bufHeight) { rtt = resolveRenderTarget(g, outWidth, outHeight); } else { rtt = rttexture; } ! Pixels pix = pixelSource.getUnusedPixels(outWidth, outHeight, outScale); IntBuffer bits = (IntBuffer) pix.getPixels(); int rawbits[] = rtt.getPixels(); if (rawbits != null) { --- 124,161 ---- rttexture = factory.createRTTexture(bufWidth, bufHeight, WrapMode.CLAMP_NOT_NEEDED, sceneState.isMSAA()); if (rttexture == null) { return; } ! penScaleX = scalex; ! penScaleY = scaley; penWidth = viewWidth; penHeight = viewHeight; freshBackBuffer = true; } Graphics g = rttexture.createGraphics(); if (g == null) { disposeRTTexture(); sceneState.getScene().entireSceneNeedsRepaint(); return; } ! g.scale(scalex, scaley); paintImpl(g); freshBackBuffer = false; int outWidth = sceneState.getOutputWidth(); int outHeight = sceneState.getOutputHeight(); ! float outScaleX = sceneState.getOutputScaleX(); ! float outScaleY = sceneState.getOutputScaleY(); RTTexture rtt; if (rttexture.isMSAA() || outWidth != bufWidth || outHeight != bufHeight) { rtt = resolveRenderTarget(g, outWidth, outHeight); } else { rtt = rttexture; } ! Pixels pix = pixelSource.getUnusedPixels(outWidth, outHeight, outScaleX, outScaleY); IntBuffer bits = (IntBuffer) pix.getPixels(); int rawbits[] = rtt.getPixels(); if (rawbits != null) {