Files
Sebastian Dine 55ace147bc major: initial release
* initial development

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* pipeline

* ci/cd

* ci/cd

* ci/cd

* ci/cd

* ci/cd

* ci/cd

* ci/cd

* pokemon

* pokemon

* pokemon

* pokemon

* pokemon

* pokemon

* improvements

* improvements

* ci/cd

* ci/cd

* improvements

* improvements

* improvements

* improvements

* improvements

* improvements

* improvements

* improvements

* improvements

---------

Co-authored-by: sdine <sdine@sdine.com>
2026-05-09 11:05:47 +02:00

52 lines
2.6 KiB
C++

#pragma once
// Small utility for converting embedded SVG icons into wxBitmap. Used by the
// side panel and the magic card list to render the foil / signed / altered
// flag icons (sourced from react-icons artwork). Also hosts the
// toolbar glyphs (vscode-codicons, matching react-icons/vsc-style buttons).
#include <wx/bitmap.h>
namespace ccm::ui {
// SVG templates for the per-game flag icons. Original sources:
// - foil -> IoSparklesSharp (Ionicons 5, MIT) [Magic]
// - signed -> BsPencilFill (Bootstrap Icons, MIT)
// - altered -> BsPaletteFill (Bootstrap Icons, MIT)
// - holo -> IoSparklesSharp (Ionicons 5, MIT) [Pokemon, mirrors original
// IconHolo from PokemonTable.tsx]
// - firstEdition -> rebuilt 1. Edition badge (CCM2 IconPokemonFirstEdition.tsx)
// The fill color is parameterized via a `@FILL@` placeholder so callers can
// choose the actual color at render time (e.g. system text vs. system
// highlight-text). NanoSVG cannot resolve CSS `currentColor`, so we have to
// bake the color into the SVG ourselves before parsing.
extern const char* const kSvgFoil;
extern const char* const kSvgSigned;
extern const char* const kSvgAltered;
extern const char* const kSvgHolo;
extern const char* const kSvgFirstEdition;
// Toolbar actions — glyphs match the original `src/pages/index.tsx` imports from
// `react-icons/vsc` (VscAdd / VscEdit / VscTrash). Embedded SVGs are sourced
// from Microsoft's vscode-codicons (MIT), same vector artwork as VS Code's
// codicon font used by react-icons.
extern const char* const kSvgToolbarAdd;
extern const char* const kSvgToolbarEdit;
extern const char* const kSvgToolbarDelete;
// Rasterize an SVG template into a wxBitmap of `size`x`size` pixels. The
// `@FILL@` placeholder in the template is replaced with `fillHex` (any CSS
// color string accepted by NanoSVG, e.g. "#000000" or "white").
// Backed by wxBitmapBundle::FromSVG, which uses NanoSVG (built in to our
// wxWidgets - configure log: `wxUSE_NANOSVG: builtin`).
wxBitmap svgIconBitmap(const char* svg, int size, const char* fillHex = "#000000");
// Same SVG, rasterized at `iconSize` and composited onto a transparent
// `container` canvas with the icon centered. Useful for wxListCtrl image
// lists where header bitmaps render left-anchored on MSW: padding the
// bitmap to the column width visually centers the icon under the header.
wxBitmap paddedSvgIcon(const char* svg, int iconSize, wxSize container,
const char* fillHex = "#000000", int xOffsetPx = 0);
} // namespace ccm::ui