57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
/*
|
|
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 <https://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#include "Image.hpp"
|
|
|
|
#include <string>
|
|
|
|
#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
|