| 28 |
28 |
| 29 #include "graphics.h" |
29 #include "graphics.h" |
| 30 #include "container.h" |
30 #include "container.h" |
| 31 |
31 |
| 32 |
32 |
| 33 DrawingArea::DrawingArea(UiObject *obj, ui_drawfunc cb, void *data) { |
|
| 34 object = obj; |
|
| 35 drawCallback = cb; |
|
| 36 userdata = data; |
|
| 37 } |
|
| 38 |
33 |
| 39 DrawingArea::~DrawingArea() { |
|
| 40 |
|
| 41 } |
|
| 42 |
|
| 43 void DrawingArea::paintEvent(QPaintEvent *event) { |
|
| 44 QPainter painter(this); |
|
| 45 |
|
| 46 UiQtGraphics g; |
|
| 47 g.g.width = this->width(); |
|
| 48 g.g.height = this->height(); |
|
| 49 g.painter = &painter; |
|
| 50 |
|
| 51 UiEvent ev; |
|
| 52 ev.obj = object; |
|
| 53 ev.window = object->window; |
|
| 54 ev.document = object->ctx->document; |
|
| 55 ev.eventdata = NULL; |
|
| 56 ev.intval = 0; |
|
| 57 |
|
| 58 drawCallback(&ev, &g.g, userdata); |
|
| 59 } |
|
| 60 |
|
| 61 |
|
| 62 |
|
| 63 UIWIDGET ui_drawingarea(UiObject *obj, ui_drawfunc f, void *userdata) { |
|
| 64 DrawingArea *widget = new DrawingArea(obj, f, userdata); |
|
| 65 |
|
| 66 UiContainer *ct = uic_get_current_container(obj); |
|
| 67 ct->add(widget, true); |
|
| 68 |
|
| 69 return widget; |
|
| 70 } |
|
| 71 |
|
| 72 void ui_drawingarea_mousehandler(UiObject *obj, UIWIDGET widget, ui_callback f, void *u) { |
|
| 73 |
|
| 74 } |
|
| 75 |
|
| 76 void ui_drawingarea_getsize(UIWIDGET drawingarea, int *width, int *height) { |
|
| 77 |
|
| 78 } |
|
| 79 |
|
| 80 void ui_drawingarea_redraw(UIWIDGET drawingarea) { |
|
| 81 |
|
| 82 } |
|
| 83 |
|
| 84 |
|
| 85 /* -------------------- text layout functions -------------------- */ |
|
| 86 |
|
| 87 UiTextLayout* ui_text(UiGraphics *g) { |
|
| 88 UiTextLayout *textlayout = new UiTextLayout(); |
|
| 89 return textlayout; |
|
| 90 } |
|
| 91 |
|
| 92 void ui_text_free(UiTextLayout *text) { |
|
| 93 delete text; |
|
| 94 } |
|
| 95 |
|
| 96 void ui_text_setstring(UiTextLayout *layout, char *str) { |
|
| 97 layout->text.setText(QString::fromUtf8(str)); |
|
| 98 } |
|
| 99 |
|
| 100 void ui_text_setstringl(UiTextLayout *layout, char *str, int len) { |
|
| 101 layout->text.setText(QString::fromUtf8(str, len)); |
|
| 102 } |
|
| 103 |
|
| 104 void ui_text_setfont(UiTextLayout *layout, char *font, int size) { |
|
| 105 layout->font = QFont(QString::fromUtf8(font), size); |
|
| 106 } |
|
| 107 |
|
| 108 void ui_text_getsize(UiTextLayout *layout, int *width, int *height) { |
|
| 109 QSizeF size = layout->text.size(); |
|
| 110 *width = (int)size.width(); |
|
| 111 *height = (int)size.height(); |
|
| 112 } |
|
| 113 |
|
| 114 void ui_text_setwidth(UiTextLayout *layout, int width) { |
|
| 115 layout->text.setTextWidth((qreal)width); |
|
| 116 } |
|
| 117 |
|
| 118 |
|
| 119 /* -------------------- drawing functions -------------------- */ |
|
| 120 |
|
| 121 void ui_graphics_color(UiGraphics *g, int red, int green, int blue) { |
|
| 122 UiQtGraphics *gr = (UiQtGraphics*)g; |
|
| 123 gr->color = QColor(red, green, blue); |
|
| 124 gr->painter->setPen(gr->color); |
|
| 125 } |
|
| 126 |
|
| 127 void ui_draw_line(UiGraphics *g, int x1, int y1, int x2, int y2) { |
|
| 128 UiQtGraphics *gr = (UiQtGraphics*)g; |
|
| 129 |
|
| 130 gr->painter->drawLine(x1, y1, x2, y2); |
|
| 131 } |
|
| 132 |
|
| 133 void ui_draw_rect(UiGraphics *g, int x, int y, int w, int h, int fill) { |
|
| 134 UiQtGraphics *gr = (UiQtGraphics*)g; |
|
| 135 |
|
| 136 QRect rect(x, y, w, h); |
|
| 137 if(fill) { |
|
| 138 gr->painter->fillRect(rect, gr->color); |
|
| 139 |
|
| 140 } else { |
|
| 141 gr->painter->drawRect(rect); |
|
| 142 } |
|
| 143 } |
|
| 144 |
|
| 145 void ui_draw_text(UiGraphics *g, int x, int y, UiTextLayout *text) { |
|
| 146 UiQtGraphics *gr = (UiQtGraphics*)g; |
|
| 147 |
|
| 148 gr->painter->setFont(text->font); |
|
| 149 gr->painter->drawStaticText(x, y, text->text); |
|
| 150 } |
|
| 151 |
|