Scaling of sprites and text

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
gpu
sigonasr2 2 years ago
parent c30f780bb5
commit 2bcec53e29
  1. 4
      src/sig/JavaProjectTemplate.java
  2. 22
      src/sig/engine/Panel.java

@ -91,10 +91,10 @@ public class JavaProjectTemplate {
game.Draw_Sprite(450,75,bookSpr,Color.GREEN); //Sprite drawing (with green tint) game.Draw_Sprite(450,75,bookSpr,Color.GREEN); //Sprite drawing (with green tint)
game.Draw_Sprite(450,75+bookSpr.getHeight(),bookSpr,Transform.VERTICAL); //Sprite drawing with vertical flip game.Draw_Sprite(450,75+bookSpr.getHeight(),bookSpr,Transform.VERTICAL); //Sprite drawing with vertical flip
game.Draw_Animated_Sprite(pl.x,pl.y,pl.spr,pl.animationFrame); //Animated Sprite drawing game.Draw_Animated_Sprite(pl.x,pl.y,pl.spr,pl.animationFrame,Color.WHITE,Transform.NONE,4,4); //Animated Sprite drawing
game.Draw_Text_Ext(10,40,"Mouse X: "+Mouse.x+" Mouse Y:"+Mouse.y,Font.PROFONT_12,Color.BLACK,2,2); //Draw Mouse coordinates in tiny font game.Draw_Text_Ext(10,40,"Mouse X: "+Mouse.x+" Mouse Y:"+Mouse.y,Font.PROFONT_12,Color.BLACK,2,2); //Draw Mouse coordinates in tiny font
game.Draw_Text_Ext(10,52,"Hello World 2!",Font.PROFONT_36,Color.MAGENTA,1,1); //Draw in larger font game.Draw_Text_Ext(10,52,"Hello World 2!",Font.PROFONT_36,Color.MAGENTA,1,3); //Draw in larger font
game.Fill_Triangle(160,160,190,190,50,250,new Color(255,0,0,150)); //Draw a translucent colored triangle game.Fill_Triangle(160,160,190,190,50,250,new Color(255,0,0,150)); //Draw a translucent colored triangle

@ -473,11 +473,11 @@ public class Panel extends JPanel implements Runnable,KeyListener {
Color currentCol = col; Color currentCol = col;
for (int i=0;i<finalS.length();i++) { for (int i=0;i<finalS.length();i++) {
if (finalS.charAt(i)=='\n') { if (finalS.charAt(i)=='\n') {
xOffset+=(charCount+1)*f.getGlyphWidth(); xOffset+=(charCount+1)*f.getGlyphWidth()*scalex;
yOffset+=f.getGlyphHeight(); yOffset+=f.getGlyphHeight()*scaley;
charCount=0; charCount=0;
} else { } else {
Draw_Sprite_Partial_Ext(x+i*f.getGlyphWidth()-xOffset, y+yOffset, f.getCharInfo(finalS.charAt(i)).getX(), f.getCharInfo(finalS.charAt(i)).getY(), f.getCharInfo(finalS.charAt(i)).getWidth(), f.getCharInfo(finalS.charAt(i)).getHeight(), f.getSprite(), currentCol,Transform.NONE,scalex,scaley); Draw_Sprite_Partial_Ext(x+(i*f.getGlyphWidth())*scalex-xOffset, y+yOffset, f.getCharInfo(finalS.charAt(i)).getX(), f.getCharInfo(finalS.charAt(i)).getY(), f.getCharInfo(finalS.charAt(i)).getWidth(), f.getCharInfo(finalS.charAt(i)).getHeight(), f.getSprite(), currentCol,Transform.NONE,scalex,scaley);
charCount++; charCount++;
} }
} }
@ -561,9 +561,9 @@ public class Panel extends JPanel implements Runnable,KeyListener {
public void Draw_Sprite(double x, double y, Sprite sprite, Color col, Transform transform, int scalex, int scaley){ public void Draw_Sprite(double x, double y, Sprite sprite, Color col, Transform transform, int scalex, int scaley){
Draw_Sprite_Partial_Ext(x,y,0,0,sprite.getWidth(),sprite.getHeight(),sprite,col,transform,scalex,scaley); Draw_Sprite_Partial_Ext(x,y,0,0,sprite.getWidth(),sprite.getHeight(),sprite,col,transform,scalex,scaley);
} }
public void Draw_Animated_Sprite(double x, double y, AnimatedSprite sprite, double frameIndex, Color col, Transform transform){ public void Draw_Animated_Sprite(double x, double y, AnimatedSprite sprite, double frameIndex, Color col, Transform transform, int scalex, int scaley){
Rectangle frameRectangle=sprite.getFrame((int)frameIndex); Rectangle frameRectangle=sprite.getFrame((int)frameIndex);
Draw_Sprite_Partial(x,y,frameRectangle.getX(),frameRectangle.getY(),frameRectangle.getWidth(),frameRectangle.getHeight(),sprite,col,transform); Draw_Sprite_Partial_Ext(x,y,frameRectangle.getX(),frameRectangle.getY(),frameRectangle.getWidth(),frameRectangle.getHeight(),sprite,col,transform,scalex,scaley);
} }
public void Draw_Sprite_Partial(double x, double y, double xOffset, double yOffset, double w, double h, Sprite sprite, Color col, Transform transform){ public void Draw_Sprite_Partial(double x, double y, double xOffset, double yOffset, double w, double h, Sprite sprite, Color col, Transform transform){
@ -580,7 +580,7 @@ public class Panel extends JPanel implements Runnable,KeyListener {
boolean vertical = transform==Transform.VERTICAL||transform==Transform.HORIZ_VERTIC; boolean vertical = transform==Transform.VERTICAL||transform==Transform.HORIZ_VERTIC;
for(int X=(int)xOffset;X<(int)(w+xOffset);X++){ for(int X=(int)xOffset;X<(int)(w+xOffset);X++){
for(int Y=(int)yOffset;Y<(int)(h+yOffset);Y++){ for(int Y=(int)yOffset;Y<(int)(h+yOffset);Y++){
if (X+x-xOffset<0||Y+y-yOffset<0||X-xOffset+x>=ACTUAL_WINDOW_WIDTH||Y-yOffset+y>=ACTUAL_WINDOW_HEIGHT) { if (x+(X-xOffset)*scalex<0||y+(Y-yOffset)*scaley<0||(X-xOffset)*scalex+x>=ACTUAL_WINDOW_WIDTH||(Y-yOffset)*scaley+y>=ACTUAL_WINDOW_HEIGHT) {
continue; continue;
} else { } else {
int index = int index =
@ -590,7 +590,7 @@ public class Panel extends JPanel implements Runnable,KeyListener {
+(int)y)*ACTUAL_WINDOW_WIDTH+ +(int)y)*ACTUAL_WINDOW_WIDTH+
(horizontal? (horizontal?
sprite.getWidth()-(X-(int)xOffset): sprite.getWidth()-(X-(int)xOffset):
(X-(int)xOffset))*scalex (X-(int)xOffset)*scalex)
+(int)x; +(int)x;
if (((sprite.getImg().getRGB(X,Y)>>>24)&0xFF)==0||index<0||index>=pixel.length) { if (((sprite.getImg().getRGB(X,Y)>>>24)&0xFF)==0||index<0||index>=pixel.length) {
continue; continue;
@ -598,9 +598,9 @@ public class Panel extends JPanel implements Runnable,KeyListener {
if (col==Color.WHITE) { if (col==Color.WHITE) {
for (int XX=0;XX<scalex;XX++) { for (int XX=0;XX<scalex;XX++) {
int newindex=index; int newindex=index;
newindex+=XX+X*scalex; newindex+=XX; //Everytime we reset we move the X marker over.
for (int YY=0;YY<scaley;YY++) { for (int YY=0;YY<scaley;YY++) {
newindex+=(YY+Y*scaley)*ACTUAL_WINDOW_WIDTH; newindex+=ACTUAL_WINDOW_WIDTH; //The Y marker only moves one pixel down at a time, because we do not reset it.
Draw(newindex,sprite.getImg().getRGB(X,Y)); Draw(newindex,sprite.getImg().getRGB(X,Y));
} }
} }
@ -608,9 +608,9 @@ public class Panel extends JPanel implements Runnable,KeyListener {
Color img = new Color(sprite.getImg().getRGB(X,Y)); Color img = new Color(sprite.getImg().getRGB(X,Y));
for (int XX=0;XX<scalex;XX++) { for (int XX=0;XX<scalex;XX++) {
int newindex=index; int newindex=index;
newindex+=XX+X*scalex; newindex+=XX; //Everytime we reset we move the X marker over.
for (int YY=0;YY<scaley;YY++) { for (int YY=0;YY<scaley;YY++) {
newindex+=(YY+Y*scaley)*ACTUAL_WINDOW_WIDTH; newindex+=ACTUAL_WINDOW_WIDTH; //The Y marker only moves one pixel down at a time, because we do not reset it.
Draw(newindex,new Color( Draw(newindex,new Color(
(int)Math.min(255.0f,Math.max(0,(float)img.r * col.r / 255.0f)), (int)Math.min(255.0f,Math.max(0,(float)img.r * col.r / 255.0f)),
(int)Math.min(255.0f,Math.max(0,(float)img.g * col.g / 255.0f)), (int)Math.min(255.0f,Math.max(0,(float)img.g * col.g / 255.0f)),

Loading…
Cancel
Save