diff --git a/DroidFishApp/src/main/assets/pieces/alfonso.zip b/DroidFishApp/src/main/assets/pieces/alfonso.zip new file mode 100644 index 0000000..66cd5cd Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/alfonso.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/alpha.zip b/DroidFishApp/src/main/assets/pieces/alpha.zip new file mode 100644 index 0000000..65ad39d Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/alpha.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/cburnett.zip b/DroidFishApp/src/main/assets/pieces/cburnett.zip new file mode 100644 index 0000000..68bdf3b Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/cburnett.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/chessicons.zip b/DroidFishApp/src/main/assets/pieces/chessicons.zip new file mode 100644 index 0000000..6d9a171 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/chessicons.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/chessmonk.zip b/DroidFishApp/src/main/assets/pieces/chessmonk.zip new file mode 100644 index 0000000..25b1331 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/chessmonk.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/freestaunton.zip b/DroidFishApp/src/main/assets/pieces/freestaunton.zip new file mode 100644 index 0000000..80d1114 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/freestaunton.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/kilfiger.zip b/DroidFishApp/src/main/assets/pieces/kilfiger.zip new file mode 100644 index 0000000..c24c33f Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/kilfiger.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/leipzig.zip b/DroidFishApp/src/main/assets/pieces/leipzig.zip new file mode 100644 index 0000000..52cc410 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/leipzig.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/magnetic.zip b/DroidFishApp/src/main/assets/pieces/magnetic.zip new file mode 100644 index 0000000..bed049d Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/magnetic.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/maya.zip b/DroidFishApp/src/main/assets/pieces/maya.zip new file mode 100644 index 0000000..ec76f66 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/maya.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/merida.zip b/DroidFishApp/src/main/assets/pieces/merida.zip new file mode 100644 index 0000000..b976394 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/merida.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/merida_new.zip b/DroidFishApp/src/main/assets/pieces/merida_new.zip new file mode 100644 index 0000000..2dfd2dd Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/merida_new.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/metaltops.zip b/DroidFishApp/src/main/assets/pieces/metaltops.zip new file mode 100644 index 0000000..8735c87 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/metaltops.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/pirat.zip b/DroidFishApp/src/main/assets/pieces/pirat.zip new file mode 100644 index 0000000..ca24b10 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/pirat.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/regular.zip b/DroidFishApp/src/main/assets/pieces/regular.zip new file mode 100644 index 0000000..3b06758 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/regular.zip differ diff --git a/DroidFishApp/src/main/assets/pieces/wikimedia.zip b/DroidFishApp/src/main/assets/pieces/wikimedia.zip new file mode 100644 index 0000000..5e334a4 Binary files /dev/null and b/DroidFishApp/src/main/assets/pieces/wikimedia.zip differ diff --git a/DroidFishApp/src/main/java/org/petero/droidfish/DroidFish.java b/DroidFishApp/src/main/java/org/petero/droidfish/DroidFish.java index c7a43b1..eb8cd17 100644 --- a/DroidFishApp/src/main/java/org/petero/droidfish/DroidFish.java +++ b/DroidFishApp/src/main/java/org/petero/droidfish/DroidFish.java @@ -169,7 +169,6 @@ public class DroidFish extends Activity ActivityCompat.OnRequestPermissionsResultCallback { // FIXME!!! PGN view option: game continuation (for training) // FIXME!!! Implement bookmark mechanism for positions in pgn files - // FIXME!!! Add support for "Chess Leipzig" font // FIXME!!! Add support for "no time control" and "hour-glass time control" as defined by the PGN standard diff --git a/DroidFishApp/src/main/java/org/petero/droidfish/PieceSet.java b/DroidFishApp/src/main/java/org/petero/droidfish/PieceSet.java index 7525996..d1c488d 100644 --- a/DroidFishApp/src/main/java/org/petero/droidfish/PieceSet.java +++ b/DroidFishApp/src/main/java/org/petero/droidfish/PieceSet.java @@ -20,7 +20,10 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -31,6 +34,9 @@ public class PieceSet { private HashMap nameToPieceType; private SVG[] svgTable = new SVG[Piece.nPieceTypes]; private Bitmap[] bitmapTable = new Bitmap[Piece.nPieceTypes]; + private Set availPieceSets; + private String defaultPieceSet = "chesscases"; + private String cachedPieceSet = defaultPieceSet; private int cachedSquareSize = -1; private int cachedWhiteColor = 0xffffffff; private int cachedBlackColor = 0xff000000; @@ -57,14 +63,26 @@ public class PieceSet { nameToPieceType.put("bn.svg", Piece.BKNIGHT); nameToPieceType.put("bp.svg", Piece.BPAWN); + String[] sa = { + defaultPieceSet, + "alfonso", "alpha", "cburnett", "chessicons", "chessmonk", + "freestaunton", "kilfiger", "leipzig", "magnetic", "maya", + "merida", "merida_new", "metaltops", "pirat", "regular", + "wikimedia", + }; + availPieceSets = new HashSet<>(Arrays.asList(sa)); + parseSvgData(); } /** Re-parse SVG data if piece properties have changed. */ final void readPrefs(SharedPreferences settings) { - boolean modified = false; // FIXME!! check for new piece set - if (modified) + String pieceSet = settings.getString("viewPieceSet", cachedPieceSet); + boolean modified = !pieceSet.equals(cachedPieceSet); + if (modified) { + cachedPieceSet = pieceSet; parseSvgData(); + } ColorTheme ct = ColorTheme.instance(); int whiteColor = ct.getColor(ColorTheme.BRIGHT_PIECE); @@ -118,7 +136,10 @@ public class PieceSet { } private ZipInputStream getZipStream() throws IOException { - InputStream is = DroidFishApp.getContext().getAssets().open("pieces/chesscases.zip"); + String set = availPieceSets.contains(cachedPieceSet) ? cachedPieceSet + : defaultPieceSet; + String name = "pieces/" + set + ".zip"; + InputStream is = DroidFishApp.getContext().getAssets().open(name); return new ZipInputStream(is); } diff --git a/DroidFishApp/src/main/res/raw/about.html b/DroidFishApp/src/main/res/raw/about.html index 7b4326d..2541e94 100644 --- a/DroidFishApp/src/main/res/raw/about.html +++ b/DroidFishApp/src/main/res/raw/about.html @@ -229,7 +229,10 @@
  • - SVG reader from svg-android project. + SVG library from androidsvg project. +
  • +
  • + Chess pieces from PyChess project.
  • Color picker, Copyright © 2010 Daniel Nilsson and Copyright © 2011 Sergey Margaritov. diff --git a/DroidFishApp/src/main/res/values/strings.xml b/DroidFishApp/src/main/res/values/strings.xml index 4c90d40..4ae4857 100644 --- a/DroidFishApp/src/main/res/values/strings.xml +++ b/DroidFishApp/src/main/res/values/strings.xml @@ -12,6 +12,7 @@ 2 1000000 1 + chesscases 5000 off \ @@ -399,6 +400,8 @@ you are not actively using the program.\ Show current variations in status area Piece Names Control how chess piece names are displayed + Piece Set + Select chess piece set Blindfold mode Show blank board instead of pieces PGN import @@ -466,6 +469,44 @@ you are not actively using the program.\ 1 2 + + Chess Cases + Alfonso + Alpha + Cburnett + Chess Icons + Chess Monk + Free Staunton + Kilfiger + Leipzig + Magnetic + Maya + Merida + Merida New + Metal Tops + Pirat + Regular + Wikimedia + + + chesscases + alfonso + alpha + cburnett + chessicons + chessmonk + freestaunton + kilfiger + leipzig + magnetic + maya + merida + merida_new + metaltops + pirat + regular + wikimedia + 16 MB 32 MB diff --git a/DroidFishApp/src/main/res/xml/preferences.xml b/DroidFishApp/src/main/res/xml/preferences.xml index 4f96ea4..7bac51d 100644 --- a/DroidFishApp/src/main/res/xml/preferences.xml +++ b/DroidFishApp/src/main/res/xml/preferences.xml @@ -153,7 +153,15 @@ android:entries="@array/viewPieceType_texts" android:defaultValue="@string/viewPieceType_default"> - + +