Advertisement
Guest User

Untitled

a guest
Mar 10th, 2012
872
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.47 KB | None | 0 0
  1.  
  2. import org.newdawn.slick.AppGameContainer;
  3. import org.newdawn.slick.BasicGame;
  4. import org.newdawn.slick.Color;
  5. import org.newdawn.slick.GameContainer;
  6. import org.newdawn.slick.Graphics;
  7. import org.newdawn.slick.Image;
  8. import org.newdawn.slick.SlickException;
  9.  
  10.  
  11. public class GameTest2 extends BasicGame {
  12.    
  13.  
  14.     public GameTest2() {
  15.         super("slick test");
  16.     }
  17.  
  18.     public static void main(String[] args) throws SlickException {
  19.         new AppGameContainer(new GameTest2(), 800, 600, false).start();
  20.     }
  21.    
  22.     private Image sv, hue;
  23.     private Color hueColor = new Color(Color.red);
  24.     private Color output = new Color(Color.red);
  25.     private boolean over = false;
  26.     private float[] hsv = { 0f, 1f, 1f };
  27.     private float hueVal = 1f;
  28.    
  29.     public void init(GameContainer c) throws SlickException {
  30.         c.setShowFPS(false);
  31.         //c.setClearEachFrame(false);
  32.         c.getGraphics().setBackground(Color.lightGray);
  33.        
  34.         sv = new Image("res/svPane.png");
  35.         hue = new Image("res/huePane.png");
  36.     }
  37.    
  38.     public void render(GameContainer c, Graphics g) throws SlickException {
  39.         g.setColor(hueColor);
  40.         g.fillRect(50, 50, sv.getWidth(), sv.getHeight());
  41.         sv.draw(50, 50);
  42.         hue.draw(225, 50);
  43.        
  44.         if (over) {
  45.             g.setColor(output);
  46.             g.fillRect(50, 250, 50, 50);
  47.         }
  48.     }
  49.    
  50.     public void update(GameContainer c, int delta) throws SlickException {
  51.         int mx = c.getInput().getMouseX();
  52.         int my = c.getInput().getMouseY();
  53.         over = false;
  54.         if (mx >= 225 && mx <= 225+hue.getWidth() && my >= 50 && my <=50+hue.getHeight()) {
  55.             float perc = 1 - ((my-50) / (float)hue.getHeight());
  56.             hsv[0] = hueVal = perc * 360;
  57.             hsv[1] = hsv[2] = 1f;
  58.             HSVtoRGB(hsv, hueColor);
  59.         } else if (mx >= 50 && mx <= 50+sv.getWidth() && my >= 50 && my <= 50+sv.getHeight()) {
  60.             float sat = ((mx-50) / (float)sv.getWidth());
  61.             float val = 1 - ((my-50) / (float)sv.getHeight());
  62.             hsv[0] = hueVal;
  63.             hsv[1] = sat;
  64.             hsv[2] = val;
  65.             //System.out.println();
  66.             HSVtoRGB(hsv, output);
  67.             over = true;
  68.         }
  69.     }
  70.    
  71.    
  72.    
  73.     public static void HSVtoRGB(float[] hsv, Color rgbOut) {
  74.         //http://www.cs.rit.edu/~ncs/color/t_convert.html
  75.         float h=hsv[0], s=hsv[1], v=hsv[2];
  76.        
  77.         int i;
  78.         float r, g, b;
  79.         float f, p, q, t;
  80.         if (s==0) {
  81.             // achromatic (grey)
  82.             r = g = b = v;
  83.         } else {
  84.             h /= 60; // sector 0 to 5
  85.             i = (int)h;
  86.             f = h - i; // factorial part of h
  87.             p = v * (1 - s);
  88.             q = v * (1 - s * f);
  89.             t = v * (1 - s * (1-f));
  90.             switch (i) {
  91.                 case 0:
  92.                     r = v;
  93.                     g = t;
  94.                     b = p;
  95.                     break;
  96.                 case 1:
  97.                     r = q;
  98.                     g = v;
  99.                     b = p;
  100.                     break;
  101.                 case 2:
  102.                     r = p;
  103.                     g = v;
  104.                     b = t;
  105.                     break;
  106.                 case 3:
  107.                     r = p;
  108.                     g = q;
  109.                     b = v;
  110.                     break;
  111.                 case 4:
  112.                     r = t;
  113.                     g = p;
  114.                     b = v;
  115.                     break;
  116.                 default:
  117.                     r = v;
  118.                     g = p;
  119.                     b = q;
  120.                     break;
  121.             }
  122.         }
  123.         rgbOut.r = r;
  124.         rgbOut.g = g;
  125.         rgbOut.b = b;
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement