2626import com .codename1 .components .FloatingHint ;
2727import com .codename1 .components .ImageViewer ;
2828import com .codename1 .components .OnOffSwitch ;
29- import com .codename1 .components .ScaleImageButton ;
3029import com .codename1 .components .ScaleImageLabel ;
3130import com .codename1 .components .ToastBar ;
3231import com .codename1 .io .FileSystemStorage ;
4140import com .codename1 .io .Storage ;
4241import com .codename1 .io .Util ;
4342import com .codename1 .system .NativeLookup ;
43+ import com .codename1 .ui .BrowserComponent ;
4444import com .codename1 .ui .Button ;
4545import com .codename1 .ui .Command ;
4646import com .codename1 .ui .Container ;
47- import com .codename1 .ui .EncodedImage ;
4847import com .codename1 .ui .FontImage ;
4948import com .codename1 .ui .Graphics ;
5049import com .codename1 .ui .Image ;
5150import com .codename1 .ui .Tabs ;
5251import com .codename1 .ui .TextArea ;
5352import com .codename1 .ui .TextField ;
5453import com .codename1 .ui .Toolbar ;
55- import com .codename1 .ui .events . ActionEvent ;
54+ import com .codename1 .ui .geom . Rectangle ;
5655import com .codename1 .ui .layouts .BorderLayout ;
5756import com .codename1 .ui .layouts .BoxLayout ;
5857import com .codename1 .ui .layouts .GridLayout ;
6160import com .codename1 .ui .spinner .Picker ;
6261import com .codename1 .ui .util .ImageIO ;
6362import com .codename1 .ui .validation .NumericConstraint ;
64- import com .codename1 .ui .validation .RegexConstraint ;
6563import com .codename1 .ui .validation .Validator ;
66- import com .codename1 .util .Base64 ;
6764import java .io .ByteArrayOutputStream ;
6865import java .io .IOException ;
6966import java .io .InputStream ;
@@ -162,8 +159,8 @@ private ImageSettings createImageSettings(String imageFile, String prefix, Valid
162159 autoSave (screenPositionY , prefix + "Y" );
163160 vl .addConstraint (screenWidthPixels , new NumericConstraint (false , 20 , 5000 , "Screen size must be a valid integer in the 20-5000 range" )).
164161 addConstraint (screenHeightPixels , new NumericConstraint (false , 20 , 5000 , "Screen size must be a valid integer in the 20-5000 range" )).
165- addConstraint (screenPositionX , new NumericConstraint (false , 20 , 5000 , "Screen size must be a valid integer in the 20 -5000 range" )).
166- addConstraint (screenPositionY , new NumericConstraint (false , 20 , 5000 , "Screen size must be a valid integer in the 20 -5000 range" ));
162+ addConstraint (screenPositionX , new NumericConstraint (false , 0 , 5000 , "Screen position must be a valid integer in the 0 -5000 range" )).
163+ addConstraint (screenPositionY , new NumericConstraint (false , 0 , 5000 , "Screen position must be a valid integer in the 0 -5000 range" ));
167164
168165 Button aim = new Button ();
169166 FontImage .setMaterialIcon (aim , FontImage .MATERIAL_PAN_TOOL );
@@ -190,7 +187,21 @@ public Container getContainer() {
190187
191188 @ Override
192189 public Image getSkinImage () {
193- return sl .getIcon ();
190+ Image img = sl .getIcon ();
191+ int [] data = img .getRGB ();
192+ int width = img .getWidth ();
193+ int height = img .getHeight ();
194+ Rectangle screen = new Rectangle (screenPositionX .getAsInt (0 ), screenPositionY .getAsInt (0 ),
195+ screenWidthPixels .getAsInt (50 ), screenHeightPixels .getAsInt (50 ));
196+ for (int x = 0 ; x < width ; x ++) {
197+ for (int y = 0 ; y < height ; y ++) {
198+ if (screen .contains (x , y , 1 , 1 )) {
199+ data [y * width + x ] = 0 ;
200+ }
201+ }
202+ }
203+
204+ return Image .createImage (data , width , height );
194205 }
195206
196207 @ Override
@@ -444,7 +455,7 @@ public void start() {
444455 FontImage settingsIconSel = FontImage .createMaterial (FontImage .MATERIAL_SETTINGS , tabSel , 3.5f );
445456 details .addTab ("Portrait" , portraitIcon , imPortrait .getContainer ());
446457 details .addTab ("Landscape" , landscapeIcon , imLandscape .getContainer ());
447- details .addTab ("Settings" , settingsIcon , settingsContainer );
458+ details .addTab ("Settings" , settingsIcon , settingsContainer );
448459 details .setTabSelectedIcon (0 , portraitIconSel );
449460 details .setTabSelectedIcon (1 , landscapeIconSel );
450461 details .setTabSelectedIcon (2 , settingsIconSel );
@@ -478,6 +489,15 @@ public void start() {
478489 vl .addSubmitButtons (skinDesignerForm .getToolbar ().findCommandComponent (saveCommand ));
479490 }
480491
492+ skinDesignerForm .getToolbar ().addMaterialCommandToLeftBar ("" , FontImage .MATERIAL_HELP , e -> {
493+ BrowserComponent help = new BrowserComponent ();
494+ help .setURL ("jar:///help.html" );
495+ Form helpForm = new Form ("Help" , new BorderLayout ());
496+ helpForm .add (BorderLayout .CENTER , help );
497+ helpForm .getToolbar ().setBackCommand ("Back" , ee -> skinDesignerForm .showBack ());
498+ helpForm .show ();
499+ });
500+
481501 if (Display .getInstance ().isNativeShareSupported ()) {
482502 skinDesignerForm .getToolbar ().addCommandToRightBar ("" ,
483503 FontImage .createMaterial (FontImage .MATERIAL_SHARE , titleCommand ), e -> {
0 commit comments