Some cleanup in Label.cpp
All checks were successful
Build ptprnt / build (push) Successful in 4m15s
All checks were successful
Build ptprnt / build (push) Successful in 4m15s
This commit is contained in:
@@ -36,7 +36,6 @@
|
|||||||
#include "pango/pango-font.h"
|
#include "pango/pango-font.h"
|
||||||
#include "pango/pango-layout.h"
|
#include "pango/pango-layout.h"
|
||||||
#include "pango/pango-types.h"
|
#include "pango/pango-types.h"
|
||||||
#include "pango/pangocairo.h"
|
|
||||||
|
|
||||||
namespace ptprnt::graphics {
|
namespace ptprnt::graphics {
|
||||||
|
|
||||||
@@ -61,16 +60,12 @@ Label::Label(const uint16_t heightPixel) : Label(heightPixel, std::make_shared<C
|
|||||||
|
|
||||||
// Constructor with dependency injection
|
// Constructor with dependency injection
|
||||||
Label::Label(const uint16_t heightPixel, std::shared_ptr<ICairoWrapper> cairoWrapper)
|
Label::Label(const uint16_t heightPixel, std::shared_ptr<ICairoWrapper> cairoWrapper)
|
||||||
: mCairoWrapper(std::move(cairoWrapper)),
|
: mCairoWrapper(std::move(cairoWrapper)), mPrinterHeight(heightPixel) {
|
||||||
mPrinterHeight(heightPixel) {
|
|
||||||
// Initialize resources in correct order with RAII
|
// Initialize resources in correct order with RAII
|
||||||
// Pass wrapper to deleter so cleanup uses the wrapper
|
// Pass wrapper to deleter so cleanup uses the wrapper
|
||||||
GObjectDeleter deleter;
|
GObjectDeleter deleter;
|
||||||
deleter.wrapper = mCairoWrapper;
|
deleter.wrapper = mCairoWrapper;
|
||||||
mFontMap = std::unique_ptr<PangoFontMap, GObjectDeleter>(
|
mFontMap = std::unique_ptr<PangoFontMap, GObjectDeleter>(mCairoWrapper->pango_cairo_font_map_new(), deleter);
|
||||||
mCairoWrapper->pango_cairo_font_map_new(),
|
|
||||||
deleter
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<uint8_t> Label::getRaw() const {
|
std::vector<uint8_t> Label::getRaw() const {
|
||||||
@@ -183,8 +178,6 @@ bool Label::create(const std::string& labelText) {
|
|||||||
mLayoutHeight /= PANGO_SCALE;
|
mLayoutHeight /= PANGO_SCALE;
|
||||||
|
|
||||||
spdlog::debug("Layout width: {}, height: {}", mLayoutWidth, mLayoutHeight);
|
spdlog::debug("Layout width: {}, height: {}", mLayoutWidth, mLayoutHeight);
|
||||||
//auto alignedWidth = mLayoutWidth + (8 - (mLayoutWidth % 8));
|
|
||||||
//spdlog::debug("Aligned Layout width: {}, height: {}", alignedWidth, mLayoutHeight);
|
|
||||||
|
|
||||||
// Clean up temporary resources
|
// Clean up temporary resources
|
||||||
mCairoWrapper->g_object_unref(tempPangoLyt);
|
mCairoWrapper->g_object_unref(tempPangoLyt);
|
||||||
@@ -202,19 +195,13 @@ bool Label::create(const std::string& labelText) {
|
|||||||
gobjectDeleter.wrapper = mCairoWrapper;
|
gobjectDeleter.wrapper = mCairoWrapper;
|
||||||
|
|
||||||
mSurface = std::unique_ptr<cairo_surface_t, CairoSurfaceDeleter>(
|
mSurface = std::unique_ptr<cairo_surface_t, CairoSurfaceDeleter>(
|
||||||
mCairoWrapper->cairo_image_surface_create(CAIRO_FORMAT_A8, mLayoutWidth, mPrinterHeight),
|
mCairoWrapper->cairo_image_surface_create(CAIRO_FORMAT_A8, mLayoutWidth, mPrinterHeight), surfaceDeleter);
|
||||||
surfaceDeleter
|
|
||||||
);
|
|
||||||
cairo_t* cr = mCairoWrapper->cairo_create(mSurface.get());
|
cairo_t* cr = mCairoWrapper->cairo_create(mSurface.get());
|
||||||
mCairoCtx = std::unique_ptr<cairo_t, CairoDeleter>(cr, cairoDeleter);
|
mCairoCtx = std::unique_ptr<cairo_t, CairoDeleter>(cr, cairoDeleter);
|
||||||
mPangoCtx = std::unique_ptr<PangoContext, GObjectDeleter>(
|
mPangoCtx =
|
||||||
mCairoWrapper->pango_cairo_create_context(cr),
|
std::unique_ptr<PangoContext, GObjectDeleter>(mCairoWrapper->pango_cairo_create_context(cr), gobjectDeleter);
|
||||||
gobjectDeleter
|
mPangoLyt =
|
||||||
);
|
std::unique_ptr<PangoLayout, GObjectDeleter>(mCairoWrapper->pango_layout_new(mPangoCtx.get()), gobjectDeleter);
|
||||||
mPangoLyt = std::unique_ptr<PangoLayout, GObjectDeleter>(
|
|
||||||
mCairoWrapper->pango_layout_new(mPangoCtx.get()),
|
|
||||||
gobjectDeleter
|
|
||||||
);
|
|
||||||
|
|
||||||
// Configure final layout with same settings
|
// Configure final layout with same settings
|
||||||
configureLayout(mPangoLyt.get(), labelText, regularFont);
|
configureLayout(mPangoLyt.get(), labelText, regularFont);
|
||||||
@@ -274,8 +261,7 @@ bool Label::append(const ILabel& other, uint32_t spacingPx) {
|
|||||||
CairoSurfaceDeleter surfaceDeleter;
|
CairoSurfaceDeleter surfaceDeleter;
|
||||||
surfaceDeleter.wrapper = mCairoWrapper;
|
surfaceDeleter.wrapper = mCairoWrapper;
|
||||||
auto newSurface = std::unique_ptr<cairo_surface_t, CairoSurfaceDeleter>(
|
auto newSurface = std::unique_ptr<cairo_surface_t, CairoSurfaceDeleter>(
|
||||||
mCairoWrapper->cairo_image_surface_create(CAIRO_FORMAT_A8, newWidth, height),
|
mCairoWrapper->cairo_image_surface_create(CAIRO_FORMAT_A8, newWidth, height), surfaceDeleter);
|
||||||
surfaceDeleter);
|
|
||||||
|
|
||||||
if (mCairoWrapper->cairo_surface_status(newSurface.get()) != CAIRO_STATUS_SUCCESS) {
|
if (mCairoWrapper->cairo_surface_status(newSurface.get()) != CAIRO_STATUS_SUCCESS) {
|
||||||
spdlog::error("Failed to create new surface for appended label");
|
spdlog::error("Failed to create new surface for appended label");
|
||||||
|
|||||||
Reference in New Issue
Block a user