Module: VivlioStarter::CLI::PreProcessCommands::ShowcaseSvgBuilder
- Defined in:
- lib/vivlio_starter/cli/pre_process/showcase_svg_builder.rb
Overview
showcase 記法のパースと合成 SVG 生成(純関数)
Defined Under Namespace
Classes: Annotation, ImageLine, ShowcaseBlock
Constant Summary collapse
- NUM =
--- 行パターン(§7.2) --- 数値トークン: パーミル(無単位)or 元画像の実ピクセル(px 接尾辞)
/-?\d+(?:\.\d+)?(?:px)?/- IMAGE_LINE =
/^!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]*)\})?\s*$/- RECT_LINE =
/^rect(?::(\d+))?\s+(#{NUM})\s*,\s*(#{NUM})\s*,\s*(#{NUM})\s*,\s*(#{NUM})(?:\s+\{([^}]*)\})?(?:\s+(.*))?$/- POINTER_LINE =
/^pointer(?::(\d+))?\s+(#{NUM})\s*,\s*(#{NUM})(?:\s+\{([^}]*)\})?(?:\s+(.*))?$/- COMMENT_LINE =
/^#/- OPTION_TOKEN =
… オプション。値の空白は二重引用符で保護する(border="3 dashed blue")。
/([\w-]+)=(?:"([^"]*)"|(\S+))/- BADGE_RADIUS =
--- 視覚定数(§7.7・初期値は §5.5。すべて「正規化単位」で描画時に u 倍する) ---
26- BADGE_FONT_SIZE =
rect バッジ(丸数字)の半径
28- BADGE_STROKE_WIDTH =
rect バッジの番号
2.5- BADGE_FILL =
rect バッジの外枠
'white'- BADGE_STROKE_COLOR =
'#333333'- BADGE_TEXT_COLOR =
白丸に濃色文字
'#222222'- RECT_BORDER =
'3 solid #ff3b30'- RECT_BACKGROUND =
'transparent'- RECT_CORNER_RADIUS =
2- POINTER_BODY_HEIGHT =
ホームベース記号の本体高さ
72- POINTER_FONT_SIZE =
pointer ラベル
30- POINTER_BACKGROUND =
'#ff3b30'- POINTER_TEXT_COLOR =
'white'- POINTER_BADGE_RADIUS =
本体内の白抜き小バッジ
20- POINTER_BADGE_FONT_SIZE =
24- POINTER_BADGE_STROKE =
2- POINTER_CONTENT_GAP =
小バッジとラベルの間隔
8- POINTER_BODY_PADDING =
本体の左右余白
24- POINTER_MIN_BODY_RATIO =
本体長の下限(本体高さ比)
1.2- DASH_PATTERNS =
線種 → stroke-dasharray(値は正規化単位)
{ 'dashed' => [8, 5], 'dotted' => [2, 4] }.freeze
- POINTER_ROTATIONS =
▶ の向き → 基準形(右向き)からの回転角。SVG の rotate は時計回り。
{ 'right' => 0, 'down' => 90, 'left' => 180, 'up' => 270 }.freeze
- BASELINE_SHIFT =
のベースライン補正(dominant-baseline はレンダラ間で挙動差があるため使わない) 0.34- LABEL_FONT_FAMILY =
ラベルに使うフォントのファミリ名。SVG 内で完結させるため実フォント名は使わない。
'vs-showcase-label'
Class Method Summary collapse
-
.alt_text(block) ⇒ Object
/ SVG の aria-label に使う説明文。 番号付きの著者コメントを「① コメント ② コメント…」形式で集約する(§5.6)。.
-
.badge(cx, cy, number, options, u) ⇒ Object
白円+濃色細枠+番号。Unicode の ① ではなく
+ で描くため フォント依存がなく、任意の番号・色・サイズが効く(§5.4)。. -
.badge_center(pos, x, y, w, h) ⇒ Object
pos → バッジ中心。left/right は枠の辺に跨って載る(§7.5.2)。.
-
.build(block, orig_w:, orig_h:, data_uri:, font_data: nil) ⇒ String
元画像を敷き、注釈をベクタで重ねた合成 SVG を組む。.
-
.circled(number) ⇒ Object
丸数字(alt 用)。Unicode に無い番号は素朴な括弧表記へ落とす。.
-
.cropped_size(block, orig_w:, orig_h:) ⇒ Array(Float, Float)
crop を差し引いた表示寸法(px)。ラスタライズ幅の算出にも使う。.
- .display_width(str) ⇒ Object
-
.embedded_font_style(font_data) ⇒ String
サブセット済みフォントを data: URI で抱かせる