|
|
@@ -131,49 +131,124 @@ bool qp_flush(painter_device_t device) {
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
-// Quantum Painter External API: qp_get_geometry
|
|
|
+// Quantum Painter External API: qp_get_*
|
|
|
|
|
|
-void qp_get_geometry(painter_device_t device, uint16_t *width, uint16_t *height, painter_rotation_t *rotation, uint16_t *offset_x, uint16_t *offset_y) {
|
|
|
- qp_dprintf("qp_get_geometry: entry\n");
|
|
|
+uint16_t qp_get_width(painter_device_t device) {
|
|
|
+ qp_dprintf("qp_get_width: entry\n");
|
|
|
painter_driver_t *driver = (painter_driver_t *)device;
|
|
|
|
|
|
- if (!driver) {
|
|
|
- qp_dprintf("qp_get_geometry: fail (pointer to NULL)\n");
|
|
|
- return;
|
|
|
+ if (!driver || !driver->validate_ok) {
|
|
|
+ qp_dprintf("qp_get_width: fail (invalid driver)\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ uint16_t width;
|
|
|
+ switch (driver->rotation) {
|
|
|
+ default:
|
|
|
+ case QP_ROTATION_0:
|
|
|
+ case QP_ROTATION_180:
|
|
|
+ width = driver->panel_width;
|
|
|
+
|
|
|
+ case QP_ROTATION_90:
|
|
|
+ case QP_ROTATION_270:
|
|
|
+ width = driver->panel_height;
|
|
|
+ }
|
|
|
+
|
|
|
+ qp_dprintf("qp_get_width: ok\n");
|
|
|
+ return width;
|
|
|
+}
|
|
|
+
|
|
|
+uint16_t qp_get_height(painter_device_t device) {
|
|
|
+ qp_dprintf("qp_get_height: entry\n");
|
|
|
+ painter_driver_t *driver = (painter_driver_t *)device;
|
|
|
+
|
|
|
+ if (!driver || !driver->validate_ok) {
|
|
|
+ qp_dprintf("qp_get_height: fail (invalid driver)\n");
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
+ uint16_t height;
|
|
|
switch (driver->rotation) {
|
|
|
default:
|
|
|
case QP_ROTATION_0:
|
|
|
case QP_ROTATION_180:
|
|
|
- if (width) {
|
|
|
- *width = driver->panel_width;
|
|
|
- }
|
|
|
- if (height) {
|
|
|
- *height = driver->panel_height;
|
|
|
- }
|
|
|
- break;
|
|
|
+ height = driver->panel_height;
|
|
|
+
|
|
|
case QP_ROTATION_90:
|
|
|
case QP_ROTATION_270:
|
|
|
- if (width) {
|
|
|
- *width = driver->panel_height;
|
|
|
- }
|
|
|
- if (height) {
|
|
|
- *height = driver->panel_width;
|
|
|
- }
|
|
|
- break;
|
|
|
+ height = driver->panel_width;
|
|
|
+ }
|
|
|
+
|
|
|
+ qp_dprintf("qp_get_height: ok\n");
|
|
|
+ return height;
|
|
|
+}
|
|
|
+
|
|
|
+painter_rotation_t qp_get_rotation(painter_device_t device) {
|
|
|
+ qp_dprintf("qp_get_rotation: entry\n");
|
|
|
+ painter_driver_t *driver = (painter_driver_t *)device;
|
|
|
+
|
|
|
+ if (!driver || !driver->validate_ok) {
|
|
|
+ qp_dprintf("qp_get_rotation: fail (invalid driver)\n");
|
|
|
+ return QP_ROTATION_0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qp_dprintf("qp_get_rotation: ok\n");
|
|
|
+ return driver->rotation;
|
|
|
+}
|
|
|
+
|
|
|
+uint16_t qp_get_offset_x(painter_device_t device) {
|
|
|
+ qp_dprintf("qp_get_offset_x: entry\n");
|
|
|
+ painter_driver_t *driver = (painter_driver_t *)device;
|
|
|
+
|
|
|
+ if (!driver || !driver->validate_ok) {
|
|
|
+ qp_dprintf("qp_get_offset_x: fail (invalid driver)\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qp_dprintf("qp_get_offset_x: ok\n");
|
|
|
+ return driver->offset_x;
|
|
|
+}
|
|
|
+
|
|
|
+uint16_t qp_get_offset_y(painter_device_t device) {
|
|
|
+ qp_dprintf("qp_get_offset_y: entry\n");
|
|
|
+ painter_driver_t *driver = (painter_driver_t *)device;
|
|
|
+
|
|
|
+ if (!driver || !driver->validate_ok) {
|
|
|
+ qp_dprintf("qp_get_offset_y: fail (invalid driver)\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qp_dprintf("qp_get_offset_y: ok\n");
|
|
|
+ return driver->offset_y;
|
|
|
+}
|
|
|
+
|
|
|
+void qp_get_geometry(painter_device_t device, uint16_t *width, uint16_t *height, painter_rotation_t *rotation, uint16_t *offset_x, uint16_t *offset_y) {
|
|
|
+ qp_dprintf("qp_geometry: entry\n");
|
|
|
+ painter_driver_t *driver = (painter_driver_t *)device;
|
|
|
+
|
|
|
+ if (!driver || !driver->validate_ok) {
|
|
|
+ qp_dprintf("qp_geometry: fail (invalid driver)\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (width) {
|
|
|
+ *width = qp_get_width(device);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (height) {
|
|
|
+ *height = qp_get_height(device);
|
|
|
}
|
|
|
|
|
|
if (rotation) {
|
|
|
- *rotation = driver->rotation;
|
|
|
+ *rotation = qp_get_rotation(device);
|
|
|
}
|
|
|
|
|
|
if (offset_x) {
|
|
|
- *offset_x = driver->offset_x;
|
|
|
+ *offset_x = qp_get_offset_x(device);
|
|
|
}
|
|
|
|
|
|
if (offset_y) {
|
|
|
- *offset_y = driver->offset_y;
|
|
|
+ *offset_y = qp_get_offset_y(device);
|
|
|
}
|
|
|
|
|
|
qp_dprintf("qp_get_geometry: ok\n");
|