/* ptrnt - print labels on linux Copyright (C) 2023 Moritz Martinius This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "Image.hpp" #include #include "pango/pango-font.h" namespace ptprnt::graphics { Image::Image() { mSurface = cairo_image_surface_create(CAIRO_FORMAT_A8, 512, 128); cairo_t* cr = cairo_create(mSurface); mFontDescription = pango_font_description_new(); pango_font_description_set_family(mFontDescription, "sans"); pango_font_description_set_weight(mFontDescription, PANGO_WEIGHT_SEMIBOLD); pango_font_description_set_size(mFontDescription, 60 * PANGO_SCALE); std::string printThis("Mist 💩"); mLayout = pango_cairo_create_layout(cr); pango_layout_set_font_description(mLayout, mFontDescription); pango_layout_set_text(mLayout, printThis.c_str(), -1); cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); cairo_move_to(cr, 0.0, 94.0); pango_cairo_show_layout_line(cr, pango_layout_get_line(mLayout, 0)); cairo_surface_write_to_png(mSurface, "hello.png"); } uint8_t* Image::getRaw() { cairo_surface_flush(mSurface); return cairo_image_surface_get_data(mSurface); } Image::~Image() { g_object_unref(mLayout); pango_font_description_free(mFontDescription); } } // namespace ptprnt::graphics