[gnome-chess] Use GResource for piece images
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-chess] Use GResource for piece images
- Date: Thu, 24 Dec 2020 17:58:35 +0000 (UTC)
commit 627ee9c5b303f17987fb477fb8c81a2aeb27b7b7
Author: Michael Catanzaro <mcatanzaro gnome org>
Date: Thu Dec 24 11:56:53 2020 -0600
Use GResource for piece images
It's 2020, no need to load SVGs from /usr/share anymore.
data/meson.build | 5 -----
src/chess-view.vala | 3 ++-
src/chess.gresource.xml | 32 +++++++++++++++++++++++++++++---
src/gnome-chess.vala | 23 ++++++++++++-----------
4 files changed, 43 insertions(+), 20 deletions(-)
---
diff --git a/data/meson.build b/data/meson.build
index 7d254cf..ce1f983 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -1,10 +1,5 @@
subdir('icons')
-# The SVGs of the chess pieces
-install_subdir('pieces',
- install_dir: join_paths(datadir, meson.project_name())
-)
-
# The engines.conf file
install_data('engines.conf',
install_dir: pkgsysconfdir,
diff --git a/src/chess-view.vala b/src/chess-view.vala
index a92f643..ed854d5 100644
--- a/src/chess-view.vala
+++ b/src/chess-view.vala
@@ -63,7 +63,8 @@ public class ChessView : Gtk.DrawingArea
Rsvg.Handle handle;
try
{
- handle = new Rsvg.Handle.from_file (Path.build_filename (PKGDATADIR, "pieces", scene.theme_name,
name + ".svg", null));
+ var stream = resources_open_stream (Path.build_path ("/", "/org/gnome/Chess/pieces",
scene.theme_name, name + ".svg"), ResourceLookupFlags.NONE);
+ handle = new Rsvg.Handle.from_stream_sync (stream, null, Rsvg.HandleFlags.FLAGS_NONE, null);
}
catch (Error e)
{
diff --git a/src/chess.gresource.xml b/src/chess.gresource.xml
index d11b371..42d9db1 100644
--- a/src/chess.gresource.xml
+++ b/src/chess.gresource.xml
@@ -1,9 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/Chess/ui">
- <file preprocess="xml-stripblanks" alias="gnome-chess.ui">gnome-chess.ui</file>
- <file preprocess="xml-stripblanks" alias="preferences.ui">preferences.ui</file>
- <file preprocess="xml-stripblanks" alias="promotion-type-selector.ui">promotion-type-selector.ui</file>
+ <file preprocess="xml-stripblanks">gnome-chess.ui</file>
+ <file preprocess="xml-stripblanks">preferences.ui</file>
+ <file preprocess="xml-stripblanks">promotion-type-selector.ui</file>
+ </gresource>
+ <gresource prefix="/org/gnome/Chess/pieces">
+ <file preprocess="xml-stripblanks" alias="fancy/blackBishop.svg">pieces/fancy/blackBishop.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/blackKing.svg">pieces/fancy/blackKing.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/blackKnight.svg">pieces/fancy/blackKnight.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/blackPawn.svg">pieces/fancy/blackPawn.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/blackQueen.svg">pieces/fancy/blackQueen.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/blackRook.svg">pieces/fancy/blackRook.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/whiteBishop.svg">pieces/fancy/whiteBishop.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/whiteKing.svg">pieces/fancy/whiteKing.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/whiteKnight.svg">pieces/fancy/whiteKnight.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/whitePawn.svg">pieces/fancy/whitePawn.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/whiteQueen.svg">pieces/fancy/whiteQueen.svg</file>
+ <file preprocess="xml-stripblanks" alias="fancy/whiteRook.svg">pieces/fancy/whiteRook.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/blackBishop.svg">pieces/simple/blackBishop.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/blackKing.svg">pieces/simple/blackKing.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/blackKnight.svg">pieces/simple/blackKnight.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/blackPawn.svg">pieces/simple/blackPawn.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/blackQueen.svg">pieces/simple/blackQueen.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/blackRook.svg">pieces/simple/blackRook.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/whiteBishop.svg">pieces/simple/whiteBishop.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/whiteKing.svg">pieces/simple/whiteKing.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/whiteKnight.svg">pieces/simple/whiteKnight.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/whitePawn.svg">pieces/simple/whitePawn.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/whiteQueen.svg">pieces/simple/whiteQueen.svg</file>
+ <file preprocess="xml-stripblanks" alias="simple/whiteRook.svg">pieces/simple/whiteRook.svg</file>
</gresource>
<gresource prefix="/org/gnome/Chess/gtk">
<file preprocess="xml-stripblanks">help-overlay.ui</file>
diff --git a/src/gnome-chess.vala b/src/gnome-chess.vala
index 19e391f..0824aa0 100644
--- a/src/gnome-chess.vala
+++ b/src/gnome-chess.vala
@@ -391,17 +391,17 @@ Copyright © 2015–2016 Sahil Sareen""";
else
color = "black";
- var filename = Path.build_filename (PKGDATADIR, "pieces", scene.theme_name, "%sQueen.svg".printf
(color));
- set_piece_image ((Image) builder.get_object ("image_queen"), filename);
+ var resource_path = Path.build_path ("/", "/org/gnome/Chess/pieces", scene.theme_name,
"%sQueen.svg".printf (color));
+ set_piece_image ((Image) builder.get_object ("image_queen"), resource_path);
- filename = Path.build_filename (PKGDATADIR, "pieces", scene.theme_name, "%sKnight.svg".printf
(color));
- set_piece_image ((Image) builder.get_object ("image_knight"), filename);
+ resource_path = Path.build_path ("/", "/org/gnome/Chess/pieces", scene.theme_name,
"%sKnight.svg".printf (color));
+ set_piece_image ((Image) builder.get_object ("image_knight"), resource_path);
- filename = Path.build_filename (PKGDATADIR, "pieces", scene.theme_name, "%sRook.svg".printf
(color));
- set_piece_image ((Image) builder.get_object ("image_rook"), filename);
+ resource_path = Path.build_path ("/", "/org/gnome/Chess/pieces", scene.theme_name,
"%sRook.svg".printf (color));
+ set_piece_image ((Image) builder.get_object ("image_rook"), resource_path);
- filename = Path.build_filename (PKGDATADIR, "pieces", scene.theme_name, "%sBishop.svg".printf
(color));
- set_piece_image ((Image) builder.get_object ("image_bishop"), filename);
+ resource_path = Path.build_path ("/", "/org/gnome/Chess/pieces", scene.theme_name,
"%sBishop.svg".printf (color));
+ set_piece_image ((Image) builder.get_object ("image_bishop"), resource_path);
promotion_type_selector_dialog.response.connect (promotion_type_selector_response_cb);
}
@@ -411,13 +411,14 @@ Copyright © 2015–2016 Sahil Sareen""";
promotion_type_completion_handler = (type) => handler (type);
}
- private void set_piece_image (Image image, string filename)
+ private void set_piece_image (Image image, string resource_path)
{
const int size = 48;
try
{
- var h = new Rsvg.Handle.from_file (filename);
+ var stream = resources_open_stream (resource_path, ResourceLookupFlags.NONE);
+ var h = new Rsvg.Handle.from_stream_sync (stream, null, Rsvg.HandleFlags.FLAGS_NONE, null);
var s = new Cairo.ImageSurface (Cairo.Format.ARGB32, size, size);
var c = new Cairo.Context (s);
@@ -430,7 +431,7 @@ Copyright © 2015–2016 Sahil Sareen""";
}
catch (Error e)
{
- warning ("Failed to load image %s: %s", filename, e.message);
+ warning ("Failed to load image %s: %s", resource_path, e.message);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]