#include "graphics.h"
#include "container.h"
DrawingArea::DrawingArea(UiObject *obj, ui_drawfunc cb,
void *data) {
object = obj;
drawCallback = cb;
userdata = data;
}
DrawingArea::~DrawingArea() {
}
void DrawingArea::paintEvent(QPaintEvent *event) {
QPainter painter(this);
UiQtGraphics g;
g.g.width = this->width();
g.g.height = this->height();
g.painter = &painter;
UiEvent ev;
ev.obj = object;
ev.window = object->window;
ev.document = object->ctx->document;
ev.eventdata =
NULL;
ev.intval =
0;
drawCallback(&ev, &g.g, userdata);
}
UIWIDGET ui_drawingarea(UiObject *obj, ui_drawfunc f,
void *userdata) {
DrawingArea *widget = new DrawingArea(obj, f, userdata);
UiContainer *ct = uic_get_current_container(obj);
ct->add(widget, true);
return widget;
}
void ui_drawingarea_mousehandler(UiObject *obj,
UIWIDGET widget, ui_callback f,
void *u) {
}
void ui_drawingarea_getsize(
UIWIDGET drawingarea,
int *width,
int *height) {
}
void ui_drawingarea_redraw(
UIWIDGET drawingarea) {
}
UiTextLayout* ui_text(UiGraphics *g) {
UiTextLayout *textlayout = new UiTextLayout();
return textlayout;
}
void ui_text_free(UiTextLayout *text) {
delete text;
}
void ui_text_setstring(UiTextLayout *layout,
char *str) {
layout->text.setText(QString::fromUtf8(str));
}
void ui_text_setstringl(UiTextLayout *layout,
char *str,
int len) {
layout->text.setText(QString::fromUtf8(str, len));
}
void ui_text_setfont(UiTextLayout *layout,
char *font,
int size) {
layout->font = QFont(QString::fromUtf8(font), size);
}
void ui_text_getsize(UiTextLayout *layout,
int *width,
int *height) {
QSizeF size = layout->text.size();
*width = (
int)size.width();
*height = (
int)size.height();
}
void ui_text_setwidth(UiTextLayout *layout,
int width) {
layout->text.setTextWidth((qreal)width);
}
void ui_graphics_color(UiGraphics *g,
int red,
int green,
int blue) {
UiQtGraphics *gr = (UiQtGraphics*)g;
gr->color = QColor(red, green, blue);
gr->painter->setPen(gr->color);
}
void ui_draw_line(UiGraphics *g,
int x1,
int y1,
int x2,
int y2) {
UiQtGraphics *gr = (UiQtGraphics*)g;
gr->painter->drawLine(x1, y1, x2, y2);
}
void ui_draw_rect(UiGraphics *g,
int x,
int y,
int w,
int h,
int fill) {
UiQtGraphics *gr = (UiQtGraphics*)g;
QRect rect(x, y, w, h);
if(fill) {
gr->painter->fillRect(rect, gr->color);
}
else {
gr->painter->drawRect(rect);
}
}
void ui_draw_text(UiGraphics *g,
int x,
int y, UiTextLayout *text) {
UiQtGraphics *gr = (UiQtGraphics*)g;
gr->painter->setFont(text->font);
gr->painter->drawStaticText(x, y, text->text);
}