mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
added skewX/Y (bug #1448) and fixed bugs in its implementation
This commit is contained in:
@@ -6884,6 +6884,16 @@ public class PApplet extends Activity implements PConstants, Runnable {
|
||||
public void scale(float x, float y, float z) {
|
||||
g.scale(x, y, z);
|
||||
}
|
||||
|
||||
|
||||
public void skewX(float angle) {
|
||||
g.skewX(angle);
|
||||
}
|
||||
|
||||
|
||||
public void skewY(float angle) {
|
||||
g.skewY(angle);
|
||||
}
|
||||
|
||||
|
||||
public void resetMatrix() {
|
||||
|
||||
@@ -3277,6 +3277,22 @@ public class PGraphics extends PImage implements PConstants {
|
||||
public void scale(float x, float y, float z) {
|
||||
showMissingWarning("scale");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Skew along X axis
|
||||
*/
|
||||
public void skewX(float angle) {
|
||||
showMissingWarning("skewX");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Skew along Y axis
|
||||
*/
|
||||
public void skewY(float angle) {
|
||||
showMissingWarning("skewY");
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -1247,6 +1247,16 @@ public class PGraphicsAndroid2D extends PGraphics {
|
||||
public void scale(float sx, float sy, float sz) {
|
||||
showDepthWarningXYZ("scale");
|
||||
}
|
||||
|
||||
|
||||
public void skewX(float angle) {
|
||||
canvas.skew((float) Math.tan(angle), 0);
|
||||
}
|
||||
|
||||
|
||||
public void skewY(float angle) {
|
||||
canvas.skew(0, (float) Math.tan(angle));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2156,9 +2156,29 @@ public class PGraphicsAndroid3D extends PGraphics {
|
||||
gl.glScalef(x, y, z);
|
||||
modelviewUpdated = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void skewX(float angle) {
|
||||
float t = (float) Math.tan(angle);
|
||||
applyMatrix(1, t, 0, 0,
|
||||
0, 1, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
public void skewY(float angle) {
|
||||
float t = (float) Math.tan(angle);
|
||||
applyMatrix(1, 0, 0, 0,
|
||||
t, 1, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
// MATRIX MORE!
|
||||
|
||||
|
||||
@@ -190,12 +190,12 @@ public class PMatrix2D implements PMatrix {
|
||||
|
||||
|
||||
public void skewX(float angle) {
|
||||
apply(1, 0, 1, angle, 0, 0);
|
||||
apply(1, 0, 1, tan(angle), 0, 0);
|
||||
}
|
||||
|
||||
|
||||
public void skewY(float angle) {
|
||||
apply(1, 0, 1, 0, angle, 0);
|
||||
apply(1, 0, 1, 0, tan(angle), 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -423,7 +423,8 @@ public class PMatrix2D implements PMatrix {
|
||||
|
||||
// TODO make this more efficient, or move into PMatrix2D
|
||||
protected boolean isWarped() {
|
||||
return ((m00 != 1) || (m01 != 0) &&
|
||||
// was &&, but changed so skewX and skewY will work
|
||||
return ((m00 != 1) || (m01 != 0) ||
|
||||
(m10 != 0) || (m11 != 1));
|
||||
}
|
||||
|
||||
@@ -446,4 +447,8 @@ public class PMatrix2D implements PMatrix {
|
||||
private final float cos(float angle) {
|
||||
return (float)Math.cos(angle);
|
||||
}
|
||||
|
||||
private final float tan(float angle) {
|
||||
return (float)Math.tan(angle);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
0182 android
|
||||
X added skewX/Y implementation
|
||||
X http://dev.processing.org/bugs/show_bug.cgi?id=1448
|
||||
|
||||
|
||||
_ for libraries that don't work with android, don't let them export
|
||||
_ e.g. people adding the opengl library when it's not needed
|
||||
|
||||
@@ -497,6 +497,8 @@ rotateY KEYWORD2 PShape_rotateY_
|
||||
rotateZ KEYWORD2 PShape_rotateZ_
|
||||
scale KEYWORD2 PShape_scale_
|
||||
setVisible KEYWORD2 PShape_setVisible_
|
||||
skewX KEYWORD2 PShape_skewX_
|
||||
skewY KEYWORD2 PShape_skewY_
|
||||
translate KEYWORD2 PShape_translate_
|
||||
public KEYWORD1 public
|
||||
pushMatrix KEYWORD2 pushMatrix_
|
||||
@@ -542,6 +544,8 @@ saveFrame KEYWORD2 saveFrame_
|
||||
saveStream KEYWORD2 saveStream_
|
||||
saveStrings KEYWORD2 saveStrings_
|
||||
scale KEYWORD2 scale_
|
||||
skewX KEYWORD2 skewX_
|
||||
skewY KEYWORD2 skewY_
|
||||
screen LITERAL2 screen
|
||||
screenX KEYWORD2 screenX_
|
||||
screenY KEYWORD2 screenY_
|
||||
|
||||
@@ -8845,6 +8845,24 @@ public class PApplet extends Applet
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Skew along X axis
|
||||
*/
|
||||
public void skewX(float angle) {
|
||||
if (recorder != null) recorder.skewX(angle);
|
||||
g.skewX(angle);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Skew along Y axis
|
||||
*/
|
||||
public void skewY(float angle) {
|
||||
if (recorder != null) recorder.skewY(angle);
|
||||
g.skewY(angle);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the current transformation matrix to identity.
|
||||
*/
|
||||
|
||||
@@ -3762,6 +3762,22 @@ public class PGraphics extends PImage implements PConstants {
|
||||
public void scale(float x, float y, float z) {
|
||||
showMissingWarning("scale");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Skew along X axis
|
||||
*/
|
||||
public void skewX(float angle) {
|
||||
showMissingWarning("skewX");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Skew along Y axis
|
||||
*/
|
||||
public void skewY(float angle) {
|
||||
showMissingWarning("skewY");
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -3089,8 +3089,26 @@ public class PGraphics3D extends PGraphics {
|
||||
forwardTransform.scale(x, y, z);
|
||||
reverseTransform.invScale(x, y, z);
|
||||
}
|
||||
|
||||
|
||||
public void skewX(float angle) {
|
||||
float t = (float) Math.tan(angle);
|
||||
applyMatrix(1, t, 0, 0,
|
||||
0, 1, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
public void skewY(float angle) {
|
||||
float t = (float) Math.tan(angle);
|
||||
applyMatrix(1, 0, 0, 0,
|
||||
t, 1, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -191,12 +191,12 @@ public class PMatrix2D implements PMatrix {
|
||||
|
||||
|
||||
public void skewX(float angle) {
|
||||
apply(1, 0, 1, angle, 0, 0);
|
||||
apply(1, 0, 1, tan(angle), 0, 0);
|
||||
}
|
||||
|
||||
|
||||
public void skewY(float angle) {
|
||||
apply(1, 0, 1, 0, angle, 0);
|
||||
apply(1, 0, 1, 0, tan(angle), 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -447,4 +447,8 @@ public class PMatrix2D implements PMatrix {
|
||||
private final float cos(float angle) {
|
||||
return (float)Math.cos(angle);
|
||||
}
|
||||
|
||||
private final float tan(float angle) {
|
||||
return (float)Math.tan(angle);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,6 +1,9 @@
|
||||
0182 core
|
||||
X fix problem with textMode(SHAPE) when using createFont()
|
||||
X remove debug message from PDF
|
||||
X consider adding skewX/Y
|
||||
o do them as shearX/Y
|
||||
X http://dev.processing.org/bugs/show_bug.cgi?id=1448
|
||||
|
||||
|
||||
big ones
|
||||
@@ -37,9 +40,6 @@ _ http://dev.processing.org/bugs/show_bug.cgi?id=1359
|
||||
_ make sure that get() and set() (for pixels and subsets) work w/ loaded images
|
||||
_ make sure that get() and set() (for pixels and subsets) work w/ P2D
|
||||
_ make sure that get() and set() (for pixels and subsets) work w/ P3D
|
||||
_ consider adding skewX/Y
|
||||
_ do them as shearX/Y
|
||||
_ http://dev.processing.org/bugs/show_bug.cgi?id=1448
|
||||
|
||||
_ add setOutput() method across other renderers?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user