Skip to content

Commit df20531

Browse files
author
zhourenjian
committed
Fixing bug of packing *.js and *.css
Add tool to pack small images into big images Update build.xml, adding j2slib.src.z.js and j2slib.swt.z.js, packing *.z.js without line breaks
1 parent 8c326ed commit df20531

4 files changed

Lines changed: 197 additions & 23 deletions

File tree

sources/net.sf.j2s.lib/build/build.xml

Lines changed: 64 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,48 @@
121121
<pathelement path="${j2s.lib.project}/bin"/>
122122
</classpath>
123123
</java>
124+
125+
<java classname="net.sf.j2s.lib.build.SmartJSCompressor">
126+
<arg value="${j2s.core.src}/java/package.js"/>
127+
<arg value="${j2s.core.bin}/java/package.js"/>
128+
129+
<arg value="link.compress=true"/>
130+
131+
<classpath>
132+
<pathelement path="${j2s.lib.project}/bin"/>
133+
</classpath>
134+
</java>
135+
136+
<java classname="net.sf.j2s.lib.build.SmartJSCompressor">
137+
<arg value="${j2s.swt.bin}/org/eclipse/swt/package.js"/>
138+
<arg value="${j2s.core.bin}/org/eclipse/swt/package.js"/>
139+
140+
<arg value="link.compress=true"/>
141+
142+
<classpath>
143+
<pathelement path="${j2s.lib.project}/bin"/>
144+
</classpath>
145+
</java>
146+
<java classname="net.sf.j2s.lib.build.UTF8Concat">
147+
<arg value="none"/>
148+
<arg value="${j2s.lib.dist}/j2slib.swt.z.js"/>
149+
150+
<arg value="${j2s.core.bin}"/>
151+
152+
<arg value="java/lang/Class.js"/>
153+
<arg value="java/lang/ClassLoader.js"/>
154+
<arg value="java/lang/ClassLoaderProgressMonitor.js"/>
155+
<arg value="java/lang/Console.js"/>
156+
<arg value="java/package.js"/>
157+
<arg value="org/eclipse/swt/package.js"/>
158+
159+
<classpath>
160+
<pathelement path="${j2s.lib.project}/bin"/>
161+
</classpath>
162+
</java>
124163

164+
<!--<delete file="${j2s.core.bin}/org/eclipse/swt/package.js" quiet="true"/>-->
165+
125166
<!-- j2slibcore.z.js does not contains Console -->
126167
<java classname="net.sf.j2s.lib.build.UTF8Concat">
127168
<arg value="none"/>
@@ -143,7 +184,7 @@
143184
- - - - - - - - - - - - - - - - - -->
144185
<target name="j2s.pack.common" depends="j2s.pack.prepare">
145186
<java classname="net.sf.j2s.lib.build.J2SConcat">
146-
<arg value="false"/>
187+
<arg value="true"/>
147188
<arg value="${j2s.core.bin}/java/core.z.js"/>
148189

149190
<arg value="${j2s.core.bin}"/>
@@ -323,6 +364,7 @@
323364
<arg value="net/sf/j2s/store/IStore.js"/>
324365
<arg value="net/sf/j2s/store/CookieStore.js"/>
325366
<arg value="net/sf/j2s/store/XSSCookieStore.js"/>
367+
<arg value="net/sf/j2s/store/HTML5LocalStorage.js"/>
326368
<arg value="net/sf/j2s/store/SimpleStore.js"/>
327369

328370
<classpath>
@@ -331,7 +373,7 @@
331373
</java>
332374

333375
<java classname="net.sf.j2s.lib.build.UTF8Concat">
334-
<arg value="false"/>
376+
<arg value="true"/>
335377
<arg value="${j2s.core.bin}/org/apache/harmony/luni/util/Msg.z.js"/>
336378
<arg value="${j2s.core.bin}"/>
337379
<arg value="org/apache/harmony/luni/util/Msg.js"/>
@@ -343,7 +385,7 @@
343385

344386

345387
<java classname="net.sf.j2s.lib.build.UTF8Concat">
346-
<arg value="false"/>
388+
<arg value="true"/>
347389
<arg value="${j2s.core.bin}/java/lang/StringBuilder.z.js"/>
348390
<arg value="${j2s.core.bin}"/>
349391
<arg value="java/lang/AbstractStringBuilder.js"/>
@@ -523,7 +565,7 @@
523565
================================= -->
524566
<target name="pack.swt.basic" description="Building j2s-swt-*.z.js">
525567
<java classname="net.sf.j2s.lib.build.UTF8Concat">
526-
<arg value="false"/>
568+
<arg value="true"/>
527569
<arg value="${j2s.swt.bin}/org/eclipse/swt/basic.z.js"/>
528570

529571
<arg value="${j2s.swt.bin}"/>
@@ -671,7 +713,7 @@
671713
================================= -->
672714
<target name="pack.swt.more" description="Building j2s-swt-*.z.js">
673715
<java classname="net.sf.j2s.lib.build.UTF8Concat">
674-
<arg value="false"/>
716+
<arg value="true"/>
675717
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/more.z.js"/>
676718

677719
<arg value="${j2s.swt.bin}"/>
@@ -702,7 +744,7 @@
702744

703745

704746
<java classname="net.sf.j2s.lib.build.UTF8Concat">
705-
<arg value="false"/>
747+
<arg value="true"/>
706748
<arg value="${j2s.swt.bin}/org/eclipse/swt/SWT.z.js"/>
707749
<arg value="${j2s.swt.bin}"/>
708750
<arg value="org/eclipse/swt/SWT.js"/>
@@ -715,7 +757,7 @@
715757
</java>
716758

717759
<java classname="net.sf.j2s.lib.build.UTF8Concat">
718-
<arg value="false"/>
760+
<arg value="true"/>
719761
<arg value="${j2s.swt.bin}/org/eclipse/swt/layout/RowLayout.z.js"/>
720762
<arg value="${j2s.swt.bin}"/>
721763
<arg value="org/eclipse/swt/layout/RowData.js"/>
@@ -728,7 +770,7 @@
728770

729771

730772
<java classname="net.sf.j2s.lib.build.UTF8Concat">
731-
<arg value="false"/>
773+
<arg value="true"/>
732774
<arg value="${j2s.swt.bin}/org/eclipse/swt/layout/FormLayout.z.js"/>
733775
<arg value="${j2s.swt.bin}"/>
734776
<arg value="org/eclipse/swt/layout/FormAttachment.js"/>
@@ -741,7 +783,7 @@
741783
</java>
742784

743785
<java classname="net.sf.j2s.lib.build.UTF8Concat">
744-
<arg value="false"/>
786+
<arg value="true"/>
745787
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/Tree.z.js"/>
746788
<arg value="${j2s.swt.bin}"/>
747789
<arg value="org/eclipse/swt/widgets/TreeItem.js"/>
@@ -755,7 +797,7 @@
755797

756798

757799
<java classname="net.sf.j2s.lib.build.UTF8Concat">
758-
<arg value="false"/>
800+
<arg value="true"/>
759801
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/ToolBar.z.js"/>
760802
<arg value="${j2s.swt.bin}"/>
761803
<arg value="org/eclipse/swt/widgets/ToolItem.js"/>
@@ -768,7 +810,7 @@
768810

769811

770812
<java classname="net.sf.j2s.lib.build.UTF8Concat">
771-
<arg value="false"/>
813+
<arg value="true"/>
772814
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/Table.z.js"/>
773815
<arg value="${j2s.swt.bin}"/>
774816
<arg value="org/eclipse/swt/widgets/TableItem.js"/>
@@ -782,7 +824,7 @@
782824
</java>
783825

784826
<java classname="net.sf.j2s.lib.build.UTF8Concat">
785-
<arg value="false"/>
827+
<arg value="true"/>
786828
<arg value="${j2s.swt.bin}/org/eclipse/swt/custom/SashForm.z.js"/>
787829
<arg value="${j2s.swt.bin}"/>
788830
<arg value="org/eclipse/swt/internal/dnd/SashDND.js"/>
@@ -798,7 +840,7 @@
798840

799841

800842
<java classname="net.sf.j2s.lib.build.UTF8Concat">
801-
<arg value="false"/>
843+
<arg value="true"/>
802844
<arg value="${j2s.swt.bin}/org/eclipse/swt/custom/CTabFolder.z.js"/>
803845
<arg value="${j2s.swt.bin}"/>
804846
<arg value="org/eclipse/swt/custom/CTabFolderEvent.js"/>
@@ -817,7 +859,7 @@
817859

818860

819861
<java classname="net.sf.j2s.lib.build.UTF8Concat">
820-
<arg value="false"/>
862+
<arg value="true"/>
821863
<arg value="${j2s.swt.bin}/org/eclipse/swt/custom/CLabel.z.js"/>
822864
<arg value="${j2s.swt.bin}"/>
823865
<arg value="org/eclipse/swt/custom/CLayoutData.js"/>
@@ -830,7 +872,7 @@
830872

831873

832874
<java classname="net.sf.j2s.lib.build.UTF8Concat">
833-
<arg value="false"/>
875+
<arg value="true"/>
834876
<arg value="${j2s.swt.bin}/org/eclipse/swt/custom/CBanner.z.js"/>
835877
<arg value="${j2s.swt.bin}"/>
836878
<arg value="org/eclipse/swt/custom/CBannerLayout.js"/>
@@ -843,7 +885,7 @@
843885

844886

845887
<java classname="net.sf.j2s.lib.build.UTF8Concat">
846-
<arg value="false"/>
888+
<arg value="true"/>
847889
<arg value="${j2s.swt.bin}/org/eclipse/swt/custom/ViewForm.z.js"/>
848890
<arg value="${j2s.swt.bin}"/>
849891
<arg value="org/eclipse/swt/custom/ViewFormLayout.js"/>
@@ -856,7 +898,7 @@
856898

857899

858900
<java classname="net.sf.j2s.lib.build.UTF8Concat">
859-
<arg value="false"/>
901+
<arg value="true"/>
860902
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/Slider.z.js"/>
861903
<arg value="${j2s.swt.bin}"/>
862904
<arg value="org/eclipse/swt/internal/dnd/SliderDND.js"/>
@@ -869,7 +911,7 @@
869911

870912

871913
<java classname="net.sf.j2s.lib.build.UTF8Concat">
872-
<arg value="false"/>
914+
<arg value="true"/>
873915
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/Scale.z.js"/>
874916
<arg value="${j2s.swt.bin}"/>
875917
<arg value="org/eclipse/swt/internal/dnd/ScaleDND.js"/>
@@ -881,7 +923,7 @@
881923
</java>
882924

883925
<java classname="net.sf.j2s.lib.build.UTF8Concat">
884-
<arg value="false"/>
926+
<arg value="true"/>
885927
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/CoolBar.z.js"/>
886928
<arg value="${j2s.swt.bin}"/>
887929
<arg value="org/eclipse/swt/widgets/CoolItem.js"/>
@@ -894,7 +936,7 @@
894936

895937

896938
<java classname="net.sf.j2s.lib.build.UTF8Concat">
897-
<arg value="false"/>
939+
<arg value="true"/>
898940
<arg value="${j2s.swt.bin}/org/eclipse/swt/graphics/Font.z.js"/>
899941
<arg value="${j2s.swt.bin}"/>
900942
<arg value="org/eclipse/swt/graphics/FontData.js"/>
@@ -915,7 +957,7 @@
915957
================================= -->
916958
<target name="pack.swt.shell" description="Building j2s-swt-*.z.js">
917959
<java classname="net.sf.j2s.lib.build.UTF8Concat">
918-
<arg value="false"/>
960+
<arg value="true"/>
919961
<arg value="${j2s.swt.bin}/org/eclipse/swt/widgets/Shell.z.js"/>
920962

921963
<arg value="${j2s.swt.bin}"/>
@@ -947,7 +989,7 @@
947989
================================= -->
948990
<target name="pack.swt.dnd" description="Building j2s-swt-*.z.js">
949991
<java classname="net.sf.j2s.lib.build.UTF8Concat">
950-
<arg value="false"/>
992+
<arg value="true"/>
951993
<arg value="${j2s.swt.bin}/org/eclipse/swt/dnd.z.js"/>
952994

953995
<arg value="${j2s.swt.bin}"/>

sources/net.sf.j2s.lib/src/net/sf/j2s/lib/build/PackCSSIntoJS.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,22 @@ public boolean accept(File pathname) {
6868
File cssFile = cssFiles[i];
6969
String path = cssFile.getAbsolutePath();
7070
File jsFile = new File(path.substring(0, path.length() - 4) + ".js");
71+
if (!jsFile.exists()) {
72+
String name = cssFile.getName();
73+
name = name.substring(0, name.length() - 4);
74+
int lastIdx = 0;
75+
int idx = -1;
76+
StringBuffer buffer = new StringBuffer();
77+
while ((idx = name.indexOf("-", lastIdx)) != -1) {
78+
buffer.append(name.substring(lastIdx, lastIdx + 1).toUpperCase());
79+
buffer.append(name.substring(lastIdx + 1, idx));
80+
lastIdx = idx + 1;
81+
}
82+
buffer.append(name.substring(lastIdx, lastIdx + 1).toUpperCase());
83+
buffer.append(name.substring(lastIdx + 1));
84+
buffer.append(".js");
85+
jsFile = new File(cssFile.getParent(), buffer.toString());
86+
}
7187
if (jsFile.exists()) {
7288
String jsContent = RegExCompress.readFileAll(new FileInputStream(jsFile));
7389
int index = 0;
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package net.sf.j2s.lib.build;
2+
3+
import java.awt.Graphics2D;
4+
import java.awt.image.BufferedImage;
5+
import java.io.File;
6+
import java.io.IOException;
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
import javax.imageio.ImageIO;
11+
12+
public class PackImage {
13+
14+
/**
15+
* @param args
16+
*/
17+
public static void main(String[] args) {
18+
if (args == null || args.length < 6) {
19+
System.out.println("Usage: PackImage <type> <margin> <path> <target> <image1> <image2> [...]");
20+
return;
21+
}
22+
23+
String type = args[0];
24+
int margin = -1;
25+
try {
26+
margin = Integer.parseInt(args[1]);
27+
} catch (NumberFormatException e1) {
28+
e1.printStackTrace();
29+
return;
30+
}
31+
if (margin < 0) {
32+
System.out.println("Margin should be greater than 0!");
33+
return;
34+
}
35+
String path = args[2];
36+
String target = args[3];
37+
List images = new ArrayList();
38+
for (int i = 4; i < args.length; i++) {
39+
String file = args[i];
40+
File f = new File(path, file);
41+
if (f.exists()) {
42+
try {
43+
BufferedImage image = ImageIO.read(f);
44+
if (image != null) {
45+
images.add(image);
46+
System.out.println("\t\t\"" + f.getName() + "\",");
47+
}
48+
} catch (IOException e) {
49+
e.printStackTrace();
50+
}
51+
}
52+
}
53+
int size = images.size();
54+
if (size < 2) {
55+
System.out.println("Warning: no need to pack image");
56+
return;
57+
}
58+
BufferedImage[] allImages = (BufferedImage[]) images.toArray(new BufferedImage[size]);
59+
int maxWidth = 0;
60+
int maxHeight = 0;
61+
for (int i = 0; i < allImages.length; i++) {
62+
BufferedImage image = allImages[i];
63+
int w = image.getWidth();
64+
if (w > maxWidth) {
65+
maxWidth = w;
66+
}
67+
int h = image.getHeight();
68+
if (h > maxHeight) {
69+
maxHeight = h;
70+
}
71+
}
72+
73+
int arraySize = (int) Math.ceil(Math.sqrt(allImages.length));
74+
int imageWidth = arraySize * maxWidth + margin * (arraySize + 1);
75+
int imageHeight = arraySize * maxHeight + margin * (arraySize + 1);
76+
BufferedImage bigImage = new BufferedImage(imageWidth,
77+
imageHeight, BufferedImage.TYPE_INT_ARGB);
78+
Graphics2D gfx = null;
79+
try {
80+
gfx = bigImage.createGraphics();
81+
for (int i = 0; i < allImages.length; i++) {
82+
BufferedImage image = allImages[i];
83+
84+
int ix = i % arraySize;
85+
int x = ix * maxWidth + (ix + 1) * margin;
86+
int iy = i / arraySize;
87+
int y = iy * maxHeight + (iy + 1) * margin;
88+
89+
gfx.drawImage(image, x, y, null);
90+
}
91+
if ("gif".equals(type)) {
92+
for (int i = 0; i < imageHeight; i++) {
93+
for (int j = 0; j < imageWidth; j++) {
94+
int rgb = bigImage.getRGB(j, i);
95+
if ((rgb & 0x7f000000) == 0) {
96+
bigImage.setRGB(j, i, -0xff3456);
97+
}
98+
}
99+
}
100+
}
101+
ImageIO.write(bigImage, type, new File(path, target));
102+
} catch (IOException e) {
103+
e.printStackTrace();
104+
} finally {
105+
if (gfx != null) {
106+
gfx.dispose();
107+
}
108+
}
109+
110+
System.out.println("Done!");
111+
System.out.println("margin=" + margin);
112+
System.out.println("width=" + maxWidth);
113+
System.out.println("height=" + maxHeight);
114+
}
115+
116+
}

0 commit comments

Comments
 (0)