1 50 51 package org.openlaszlo.iv.flash.api.shape; 52 53 import org.openlaszlo.iv.flash.util.*; 54 import org.openlaszlo.iv.flash.api.*; 55 import org.openlaszlo.iv.flash.parser.Parser; 56 import java.io.PrintStream ; 57 58 64 public final class MorphGradient extends FlashItem { 65 66 private int nGrads; 67 private int[] ratios_start = new int[8]; 68 private int[] ratios_end = new int[8]; 69 private Color[] colors_start = new Color[8]; 70 private Color[] colors_end = new Color[8]; 71 72 75 public MorphGradient() {} 76 77 85 public MorphGradient( int ratio_start, Color color_start, int ratio_end, Color color_end ) { 86 nGrads = 0; 87 addTransition( ratio_start, color_start, ratio_end, color_end ); 88 } 89 90 public Color[] getColorsStart() { 91 return colors_start; 92 } 93 94 public int[] getRatiosStart() { 95 return ratios_start; 96 } 97 98 public Color[] getColorsEnd() { 99 return colors_end; 100 } 101 102 public int[] getRatiosEnd() { 103 return ratios_end; 104 } 105 106 public int getNumber() { 107 return nGrads; 108 } 109 110 118 public void addTransition( int ratio_start, Color color_start, int ratio_end, Color color_end ) { 119 ratios_start[nGrads] = ratio_start; 120 colors_start[nGrads] = color_start; 121 ratios_end[nGrads] = ratio_end; 122 colors_end[nGrads] = color_end; 123 nGrads++; 124 } 125 126 public static MorphGradient parse( Parser p ) { 127 MorphGradient g = new MorphGradient(); 128 int nGrads = p.getUByte(); 129 for( int i=0; i<nGrads; i++ ) { 130 int ratio_start = p.getUByte(); 131 AlphaColor color_start = AlphaColor.parse(p); 132 int ratio_end = p.getUByte(); 133 AlphaColor color_end = AlphaColor.parse(p); 134 g.addTransition(ratio_start, color_start, ratio_end, color_end); 135 } 136 return g; 137 } 138 139 public void write( FlashOutput fob ) { 140 fob.writeByte(nGrads); 141 for( int i=0; i<nGrads; i++ ) { 142 fob.writeByte( ratios_start[i] ); 143 colors_start[i].writeRGBA(fob); 144 fob.writeByte( ratios_end[i] ); 145 colors_end[i].writeRGBA(fob); 146 } 147 } 148 149 public void printContent( PrintStream out, String indent ) { 150 out.println( indent+"MorphGradient: num="+nGrads ); 151 for( int i=0; i<nGrads; i++ ) { 152 out.println( indent+" ratio_start["+i+"]="+ratios_start[i] ); 153 out.print( indent+" color_start["+i+"]=" ); colors_start[i].printContent(out, ""); 154 out.println( indent+" ratio_end["+i+"]="+ratios_end[i] ); 155 out.print( indent+" color_end["+i+"]=" ); colors_end[i].printContent(out, ""); 156 } 157 } 158 159 protected FlashItem copyInto( FlashItem item, ScriptCopier copier ) { 160 for( int i=0; i<nGrads; i++ ) { 161 ((MorphGradient)item).addTransition( 162 ratios_start[i], colors_start[i], ratios_end[i], colors_end[i]); 163 } 164 return item; 165 } 166 167 public FlashItem getCopy( ScriptCopier copier ) { 168 return copyInto( new MorphGradient(), copier ); 169 } 170 } 171 172 | Popular Tags |