SVG印刷対応とメディア情報APIを追加
SVG入力を現在テープ幅に自動フィットして印刷できるようにし、アプリ側が余白計算できるようにテープ幅・DPI・最小送り量を取得するAPIを追加する。 Made-with: Cursor
This commit is contained in:
@@ -73,6 +73,19 @@ typedef struct {
|
||||
uint8_t margin_mm; /**< 余白など(機種・仕様に合わせて使用) */
|
||||
} libptouch_raster_params_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t media_width_code; /**< status[10] */
|
||||
uint8_t media_kind_code; /**< status[11] */
|
||||
double print_dpi; /**< 印字幅方向 DPI(現状 180 or 360) */
|
||||
double feed_dpi; /**< 送り方向 DPI(ESC i d の基準) */
|
||||
double tape_width_mm; /**< 装着テープ幅(mm)。例: 3.5, 6, 9, 12, 18, 24, 36 */
|
||||
uint16_t printable_dots; /**< 現在テープで印字可能な幅(ドット) */
|
||||
uint16_t left_margin_dots; /**< 左余白(ドット) */
|
||||
uint16_t right_margin_dots; /**< 右余白(ドット) */
|
||||
uint16_t min_feed_dots; /**< 仕様上の最小送り量(ドット)。現在は 14 */
|
||||
double min_feed_mm; /**< 最小送り量(mm) */
|
||||
} libptouch_media_info_t;
|
||||
|
||||
/**
|
||||
* バッファサイズとパラメータの整合性のみ検査(USB 不要)。--dry-run 用。
|
||||
*/
|
||||
@@ -80,6 +93,13 @@ libptouch_err_t libptouch_check_raster(libptouch_ctx *ctx,
|
||||
const uint8_t *data, size_t data_len,
|
||||
const libptouch_raster_params_t *params);
|
||||
|
||||
/**
|
||||
* 現在装着テープの情報を取得する(USB 接続済み必須)。
|
||||
* ステータスと機種プロファイルからテープ幅・印字可能幅・最小余白量を返す。
|
||||
*/
|
||||
libptouch_err_t libptouch_get_current_media_info(libptouch_ctx *ctx,
|
||||
libptouch_media_info_t *out_info);
|
||||
|
||||
/**
|
||||
* 1 ビット packed ラスターを USB で印刷(各機種のラスター PDF 準拠)。
|
||||
* 印字前にステータスでテープ幅を読み、印刷可能ドット内に画像を中央配置する。
|
||||
@@ -101,6 +121,10 @@ typedef struct {
|
||||
uint8_t threshold; /**< 輝度がこれ未満なら黒(1)、以上なら白(0) */
|
||||
} libptouch_png_options_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t threshold; /**< 輝度がこれ未満なら黒(1)、以上なら白(0) */
|
||||
} libptouch_svg_options_t;
|
||||
|
||||
/**
|
||||
* PNG ファイルを読み、1bit packed ラスターに変換する(libpng)。
|
||||
* @param out_raster malloc 済みバッファのポインタを返す。不要時は @ref libptouch_free_raster で解放。
|
||||
@@ -110,6 +134,17 @@ libptouch_err_t libptouch_png_file_to_raster(libptouch_ctx *ctx, const char *pat
|
||||
uint8_t **out_raster, size_t *out_raster_bytes,
|
||||
libptouch_raster_params_t *out_params);
|
||||
|
||||
/**
|
||||
* SVG ファイルを現在装着中テープの印字可能幅に合わせて 1bit packed ラスターへ変換する
|
||||
* (librsvg + cairo)。
|
||||
* @note 現在テープ幅を取得するため、事前に @ref libptouch_open_usb などで USB 接続が必要。
|
||||
* @param out_raster malloc 済みバッファのポインタを返す。不要時は @ref libptouch_free_raster で解放。
|
||||
*/
|
||||
libptouch_err_t libptouch_svg_file_to_raster_fit_current_tape(
|
||||
libptouch_ctx *ctx, const char *path,
|
||||
const libptouch_svg_options_t *options, uint8_t **out_raster,
|
||||
size_t *out_raster_bytes, libptouch_raster_params_t *out_params);
|
||||
|
||||
void libptouch_free_raster(uint8_t *raster);
|
||||
|
||||
/** ステータス情報リクエスト(ESC i S)の応答バイト数(cv_ptp900_jpn_raster_102.pdf) */
|
||||
|
||||
Reference in New Issue
Block a user