Revision: 2508
http://sourceforge.net/p/swingme/code/2508
Author: yuranet
Date: 2021-07-04 14:35:21 +0000 (Sun, 04 Jul 2021)
Log Message:
-----------
vertical scrollbar works
Modified Paths:
--------------
iOSME/src/javax/microedition/lcdui/Graphics.java
iOSME/src/javax/microedition/lcdui/Image.java
iOSME/src/net/yura/ios/plaf/IOSBorder.java
Modified: iOSME/src/javax/microedition/lcdui/Graphics.java
===================================================================
--- iOSME/src/javax/microedition/lcdui/Graphics.java 2021-07-02 21:49:38 UTC (rev 2507)
+++ iOSME/src/javax/microedition/lcdui/Graphics.java 2021-07-04 14:35:21 UTC (rev 2508)
@@ -4,6 +4,7 @@
import apple.coregraphics.opaque.CGColorRef;
import apple.coregraphics.opaque.CGContextRef;
import apple.coregraphics.opaque.CGFontRef;
+import apple.coregraphics.struct.CGAffineTransform;
import apple.coregraphics.struct.CGPoint;
import apple.coregraphics.struct.CGRect;
import apple.coregraphics.struct.CGSize;
@@ -480,6 +481,10 @@
CoreGraphics.CGContextClipToRect(context, oldClip);
}
*/
+
+ // TODO if we dont need to crop, we can juse use
+ // CGAffineTransform affineTransform = getAffineTransform(transform);
+
UIImage transformed = src.getUIImage(xSrc, ySrc, width, height, transform);
boolean same = isCurrentContext();
@@ -516,6 +521,39 @@
}
}
+ public static CGAffineTransform getAffineTransform(int transform) {
+ CGAffineTransform affineTransform = CoreGraphics.CGAffineTransformIdentity();
+
+ switch (transform) {
+ case Sprite.TRANS_ROT90:
+ case Sprite.TRANS_MIRROR_ROT90:
+ affineTransform = CoreGraphics.CGAffineTransformRotate(affineTransform, Math.PI / 2);
+ break;
+ case Sprite.TRANS_ROT180:
+ case Sprite.TRANS_MIRROR_ROT180:
+ affineTransform = CoreGraphics.CGAffineTransformRotate(affineTransform, Math.PI);
+ break;
+ case Sprite.TRANS_ROT270:
+ case Sprite.TRANS_MIRROR_ROT270:
+ affineTransform = CoreGraphics.CGAffineTransformRotate(affineTransform, - Math.PI / 2);
+ break;
+ }
+
+ switch (transform) {
+ case Sprite.TRANS_MIRROR:
+ case Sprite.TRANS_MIRROR_ROT180:
+ affineTransform = CoreGraphics.CGAffineTransformScale(affineTransform, -1, 1);
+ break;
+
+ case Sprite.TRANS_MIRROR_ROT270:
+ case Sprite.TRANS_MIRROR_ROT90:
+ affineTransform = CoreGraphics.CGAffineTransformScale(affineTransform, -1, 1);
+ break;
+ }
+
+ return affineTransform;
+ }
+
public void drawRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height, boolean processAlpha) {
if (rgbData == null)
throw new NullPointerException();
Modified: iOSME/src/javax/microedition/lcdui/Image.java
===================================================================
--- iOSME/src/javax/microedition/lcdui/Image.java 2021-07-02 21:49:38 UTC (rev 2507)
+++ iOSME/src/javax/microedition/lcdui/Image.java 2021-07-04 14:35:21 UTC (rev 2508)
@@ -271,7 +271,7 @@
}
CoreGraphics.CGImageRelease(cropped);
- if (transformed.scale() != scale || transformed.size().width() != width || transformed.size().height() != height) {
+ if (transformed.scale() != scale || (transformed.size().width() != width && transformed.size().width() != height)) {
throw new IllegalStateException("scale is not correct " + transformed.scale() +"="+ start.scale() +" "+ transformed.size().width() +"="+ width +" "+ transformed.size().height() +"="+ height);
}
Modified: iOSME/src/net/yura/ios/plaf/IOSBorder.java
===================================================================
--- iOSME/src/net/yura/ios/plaf/IOSBorder.java 2021-07-02 21:49:38 UTC (rev 2507)
+++ iOSME/src/net/yura/ios/plaf/IOSBorder.java 2021-07-04 14:35:21 UTC (rev 2508)
@@ -5,6 +5,9 @@
import net.yura.mobile.gui.components.Component;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.Sprite;
+import apple.coregraphics.c.CoreGraphics;
+import apple.coregraphics.opaque.CGContextRef;
+import apple.coregraphics.struct.CGAffineTransform;
import apple.coregraphics.struct.CGPoint;
import apple.coregraphics.struct.CGRect;
import apple.coregraphics.struct.CGSize;
@@ -22,24 +25,30 @@
@Override
public void paintBorder(Component c, Graphics2D g, int width, int height) {
- int tx = g.getTranslateX();
- int ty = g.getTranslateY();
- CGRect rect = new CGRect(new CGPoint(tx - left, ty - top), new CGSize(width + left + right, height + top + bottom));
+ int tx = g.getGraphics().getTranslateX();
+ int ty = g.getGraphics().getTranslateY();
int transform = g.getTransform();
boolean same = g.getGraphics().isCurrentContext();
+ CGContextRef context = g.getGraphics().getContext();
- if (!same) UIKit.UIGraphicsPushContext(g.getGraphics().getContext());
+ if (!same) UIKit.UIGraphicsPushContext(context);
if (transform == Sprite.TRANS_NONE) {
+ CGRect rect = new CGRect(new CGPoint(tx - left, ty - top), new CGSize(width + left + right, height + top + bottom));
resizableImage.drawInRect(rect);
}
else {
- long imageOrientation = Graphics.getUIImageOrientation(transform);
+ CGRect rect = new CGRect(new CGPoint( - left, - top), new CGSize(width + left + right, height + top + bottom));
+ CGAffineTransform affineTransform = Graphics.getAffineTransform(transform);
+ CoreGraphics.CGContextTranslateCTM(context, tx, ty);
+ CoreGraphics.CGContextConcatCTM(context, affineTransform);
+ resizableImage.drawInRect(rect);
-
+ CoreGraphics.CGContextConcatCTM(context, CoreGraphics.CGAffineTransformInvert(affineTransform));
+ CoreGraphics.CGContextTranslateCTM(context, -tx, -ty);
}
if (!same) UIKit.UIGraphicsPopContext();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|