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