Changeset 182:3a1b4f4c68aa in livinglogic.java.ul4

Show
Ignore:
Timestamp:
12/27/08 17:27:35 (11 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Add a Color method withlum() and add support for calling it in UL4 templates.

Location:
library/src/com/livinglogic/ul4
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • library/src/com/livinglogic/ul4/Color.java

    r181 r182  
    178178    } 
    179179 
    180     public static Color fromhls(double h, double s, double v) 
    181     { 
    182         return fromhls(h, s, v, 1.0); 
     180    public static Color fromhls(double h, double l, double s) 
     181    { 
     182        return fromhls(h, l, s, 1.0); 
    183183    } 
    184184 
     
    345345 
    346346        double h; 
    347         if (r == dmaxc) 
     347        if (r == maxc) 
    348348            h = bc-gc; 
    349349        else if (g == maxc) 
     
    422422 
    423423        return (dminc+dmaxc)/2.0; 
     424    } 
     425 
     426    public Color withlum(double lum) 
     427    { 
     428        int maxc = NumberUtils.max((int)r, (int)g, (int)b); 
     429        int minc = NumberUtils.min((int)r, (int)g, (int)b); 
     430 
     431        double dmaxc = maxc/255.; 
     432        double dminc = minc/255.; 
     433 
     434        double l = (dminc+dmaxc)/2.0; 
     435 
     436        if (minc == maxc) 
     437            return fromhls(0., lum, 0., a); 
     438 
     439        double s = l <= 0.5 ? (dmaxc-dminc) / (dmaxc+dminc) : (dmaxc-dminc) / (2.0-dmaxc-dminc); 
     440 
     441        double rc = (dmaxc-r/255.) / (dmaxc-dminc); 
     442        double gc = (dmaxc-g/255.) / (dmaxc-dminc); 
     443        double bc = (dmaxc-b/255.) / (dmaxc-dminc); 
     444 
     445        double h; 
     446        if (r == maxc) 
     447            h = bc-gc; 
     448        else if (g == maxc) 
     449            h = 2.0+rc-bc; 
     450        else 
     451            h = 4.0+gc-rc; 
     452        h = (h/6.0) % 1.0; 
     453 
     454        return fromhls(h, lum, s, a); 
    424455    } 
    425456 
  • library/src/com/livinglogic/ul4/Main.java

    r181 r182  
    1111        Color c = new Color(0x00, 0x63, 0xa8, 0x33); 
    1212        Color b = new Color(0x00, 0x00, 0x00, 0xff); 
    13         Template tmpl = Compiler.compile("<?print #fc9.lum()?>"); 
     13        Template tmpl = Compiler.compile("<?print #fc9.withlum(0.2)?>"); 
    1414        System.out.println(tmpl); 
    1515        long start = System.currentTimeMillis(); 
  • library/src/com/livinglogic/ul4/Opcode.java

    r181 r182  
    140140    public static final int CM1_FORMAT = 9; 
    141141    public static final int CM1_GET = 10; 
     142    public static final int CM1_WITHLUM = 11; 
    142143 
    143144    public static final int CM2_SPLIT = 0; 
     
    464465        else if (name.equals("get")) 
    465466            return CM1_GET; 
     467        else if (name.equals("withlum")) 
     468            return CM1_WITHLUM; 
    466469        else 
    467470            throw new UnknownMethodException(name); 
  • library/src/com/livinglogic/ul4/Template.java

    r181 r182  
    13121312                                    reg[code.r1] = ((Map)reg[code.r2]).get(reg[code.r3]); 
    13131313                                    break; 
     1314                                case Opcode.CM1_WITHLUM: 
     1315                                    reg[code.r1] = Utils.withlum(reg[code.r2], reg[code.r3]); 
     1316                                    break; 
    13141317                            } 
    13151318                            break; 
     
    20912094                            code(buffer, indent, "reg" + opcode.r1 + " = ul4c._format(reg" + opcode.r2 + ", reg" + opcode.r3 + ")"); 
    20922095                            break; 
     2096                        case Opcode.CM1_WITHLUM: 
     2097                            code(buffer, indent, "reg" + opcode.r1 + " = reg" + opcode.r2 + ".withlum(reg" + opcode.r3 + ")"); 
     2098                            break; 
    20932099                    } 
    20942100                    break; 
  • library/src/com/livinglogic/ul4/Utils.java

    r180 r182  
    13671367    } 
    13681368 
     1369    public static Color withlum(Object arg1, Object arg2) 
     1370    { 
     1371        return ((Color)arg1).withlum(_getdouble(arg2)); 
     1372    } 
     1373 
    13691374    public static void main(String[] args) 
    13701375    {