Updated standard library
DisplayDefs.h@180:4882e80cfcfe, 2019-07-28 (annotated)
- Committer:
- WiredHome
- Date:
- Sun Jul 28 00:21:15 2019 +0000
- Revision:
- 180:4882e80cfcfe
- Parent:
- 178:f21d24431d5a
new constructor for rect_t; much faster thick line drawing; additional debug diagnostics.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WiredHome | 31:c72e12cd5c67 | 1 | #ifndef DISPLAYDEFS_H |
WiredHome | 31:c72e12cd5c67 | 2 | #define DISPLAYDEFS_H |
WiredHome | 31:c72e12cd5c67 | 3 | |
WiredHome | 167:8aa3fb2a5a31 | 4 | /// A Macro to define a @ref color_t value from independent values of Red, Green, and Blue. |
WiredHome | 167:8aa3fb2a5a31 | 5 | /// |
WiredHome | 167:8aa3fb2a5a31 | 6 | /// This macro accepts 3 parameters, each with a range of 0 to 0xFF. |
WiredHome | 167:8aa3fb2a5a31 | 7 | /// Not all of the bits are used as it creates a 16-bit color from from 24-bits |
WiredHome | 167:8aa3fb2a5a31 | 8 | /// of information. |
WiredHome | 167:8aa3fb2a5a31 | 9 | /// |
WiredHome | 167:8aa3fb2a5a31 | 10 | /// @param r is the Red component, ranging from 0 no-Red to 0xFF maximum-Red |
WiredHome | 167:8aa3fb2a5a31 | 11 | /// @param g is the Green component, ranging from 0 no-Red to 0xFF maximum-Green |
WiredHome | 167:8aa3fb2a5a31 | 12 | /// @param b is the Blue component, ranging from 0 no-Red to 0xFF maximum-Blue |
WiredHome | 167:8aa3fb2a5a31 | 13 | /// |
WiredHome | 32:0e4f2ae512e2 | 14 | #define RGB(r,g,b) ( ((r<<8)&0xF800) | ((g<<3)&0x07E0) | (b>>3) ) |
WiredHome | 32:0e4f2ae512e2 | 15 | |
WiredHome | 167:8aa3fb2a5a31 | 16 | /// Return values from numerous APIs. |
WiredHome | 167:8aa3fb2a5a31 | 17 | /// |
WiredHome | 167:8aa3fb2a5a31 | 18 | /// This is the return value from various functions. Compare the return value |
WiredHome | 167:8aa3fb2a5a31 | 19 | /// to the possibilities in this definition, or use the @ref RA8875::GetErrorMessage() |
WiredHome | 167:8aa3fb2a5a31 | 20 | /// function to translate a @ref RetCode_t value into a text string. |
WiredHome | 79:544eb4964795 | 21 | /// |
WiredHome | 31:c72e12cd5c67 | 22 | typedef enum |
WiredHome | 31:c72e12cd5c67 | 23 | { |
WiredHome | 31:c72e12cd5c67 | 24 | noerror, ///< no errors, command completed successfully |
WiredHome | 31:c72e12cd5c67 | 25 | bad_parameter, ///< one or more parameters are invalid |
WiredHome | 31:c72e12cd5c67 | 26 | file_not_found, ///< specified file could not be found |
WiredHome | 42:7cbdfd2bbfc5 | 27 | not_bmp_format, ///< file is not a .bmp file |
WiredHome | 42:7cbdfd2bbfc5 | 28 | not_ico_format, ///< file is not a .ico file |
WiredHome | 112:325ca91bc03d | 29 | not_supported_format, ///< file format is not yet supported (e.g. bits per pixel, compression) |
WiredHome | 31:c72e12cd5c67 | 30 | image_too_big, ///< image is too large for the screen |
WiredHome | 31:c72e12cd5c67 | 31 | not_enough_ram, ///< could not allocate ram for scanline |
WiredHome | 122:79e431f98fa9 | 32 | touch_cal_timeout, ///< timeout while trying to calibrate touchscreen, perhaps it is not installed. |
WiredHome | 115:c9862fd0c689 | 33 | external_abort, ///< an external process caused an abort |
WiredHome | 79:544eb4964795 | 34 | LastErrCode, // Private marker. |
WiredHome | 31:c72e12cd5c67 | 35 | } RetCode_t; |
WiredHome | 31:c72e12cd5c67 | 36 | |
WiredHome | 167:8aa3fb2a5a31 | 37 | /// Touch API Return values. |
WiredHome | 167:8aa3fb2a5a31 | 38 | /// |
WiredHome | 167:8aa3fb2a5a31 | 39 | /// This is the return value from various functions: |
WiredHome | 167:8aa3fb2a5a31 | 40 | /// * @ref RA8875::TouchCode() |
WiredHome | 167:8aa3fb2a5a31 | 41 | /// * @ref RA8875::TouchPanelReadable() |
WiredHome | 167:8aa3fb2a5a31 | 42 | /// * @ref RA8875::TouchPanelA2DRaw() |
WiredHome | 167:8aa3fb2a5a31 | 43 | /// * @ref RA8875::TouchPanelA2DFiltered() |
WiredHome | 167:8aa3fb2a5a31 | 44 | /// * @ref RA8875::TouchPanelGet() |
WiredHome | 167:8aa3fb2a5a31 | 45 | /// |
WiredHome | 83:7bad0068cca0 | 46 | typedef enum |
WiredHome | 83:7bad0068cca0 | 47 | { |
WiredHome | 83:7bad0068cca0 | 48 | no_touch, ///< no touch is detected |
WiredHome | 83:7bad0068cca0 | 49 | touch, ///< touch is detected |
WiredHome | 83:7bad0068cca0 | 50 | held, ///< held after touch |
WiredHome | 83:7bad0068cca0 | 51 | release, ///< release is detected |
WiredHome | 83:7bad0068cca0 | 52 | no_cal, ///< no calibration matrix is available |
WiredHome | 83:7bad0068cca0 | 53 | } TouchCode_t; |
WiredHome | 83:7bad0068cca0 | 54 | |
WiredHome | 125:7a0b70f56550 | 55 | /// Data type that manages locations, which is typically an x or y pixel location, |
WiredHome | 167:8aa3fb2a5a31 | 56 | /// which can range from -N to +N (even as the screen is always defined in the |
WiredHome | 167:8aa3fb2a5a31 | 57 | /// range of 0 to +n). See also @ref textloc_t. |
WiredHome | 167:8aa3fb2a5a31 | 58 | /// |
WiredHome | 37:f19b7e7449dc | 59 | typedef int16_t loc_t; |
WiredHome | 37:f19b7e7449dc | 60 | |
WiredHome | 125:7a0b70f56550 | 61 | /// Data type that manages text locations, which are row or column values in |
WiredHome | 167:8aa3fb2a5a31 | 62 | /// units of character, not pixel. See also @ref loc_t. |
WiredHome | 167:8aa3fb2a5a31 | 63 | /// |
WiredHome | 37:f19b7e7449dc | 64 | typedef uint16_t textloc_t; |
WiredHome | 37:f19b7e7449dc | 65 | |
WiredHome | 37:f19b7e7449dc | 66 | /// type that manages dimensions of width or height, which range from 0 to N. |
WiredHome | 167:8aa3fb2a5a31 | 67 | /// |
WiredHome | 167:8aa3fb2a5a31 | 68 | /// @note that a dimension cannot be negative. |
WiredHome | 167:8aa3fb2a5a31 | 69 | /// |
WiredHome | 37:f19b7e7449dc | 70 | typedef uint16_t dim_t; |
WiredHome | 37:f19b7e7449dc | 71 | |
WiredHome | 32:0e4f2ae512e2 | 72 | /// type that manages x,y pairs |
WiredHome | 167:8aa3fb2a5a31 | 73 | /// |
lizard753 | 177:0ff83f026bb6 | 74 | struct point_t |
WiredHome | 32:0e4f2ae512e2 | 75 | { |
WiredHome | 37:f19b7e7449dc | 76 | loc_t x; ///< x value in the point |
WiredHome | 37:f19b7e7449dc | 77 | loc_t y; ///< y value in the point |
lizard753 | 178:f21d24431d5a | 78 | |
lizard753 | 178:f21d24431d5a | 79 | // constructors: |
lizard753 | 178:f21d24431d5a | 80 | point_t(loc_t arg_x, loc_t arg_y) : |
lizard753 | 178:f21d24431d5a | 81 | x(arg_x), y(arg_y) {} |
lizard753 | 178:f21d24431d5a | 82 | point_t() : |
lizard753 | 178:f21d24431d5a | 83 | x(0), y(0){}; |
lizard753 | 177:0ff83f026bb6 | 84 | }; |
WiredHome | 32:0e4f2ae512e2 | 85 | |
WiredHome | 167:8aa3fb2a5a31 | 86 | /// Data type that manages rectangles, which are pairs of points. |
WiredHome | 167:8aa3fb2a5a31 | 87 | /// |
WiredHome | 167:8aa3fb2a5a31 | 88 | /// @note It is recommended that p1 contains the top-left point and p2 contains |
WiredHome | 167:8aa3fb2a5a31 | 89 | /// the bottom-right point, even though it should not matter. |
WiredHome | 167:8aa3fb2a5a31 | 90 | /// |
lizard753 | 178:f21d24431d5a | 91 | struct rect_t |
WiredHome | 81:01da2e34283d | 92 | { |
WiredHome | 81:01da2e34283d | 93 | point_t p1; ///< p1 defines one point on the rectangle |
WiredHome | 81:01da2e34283d | 94 | point_t p2; ///< p2 defines the opposite point on the rectangle |
lizard753 | 178:f21d24431d5a | 95 | |
lizard753 | 178:f21d24431d5a | 96 | // constructors: |
lizard753 | 178:f21d24431d5a | 97 | rect_t(point_t arg_p1, point_t arg_p2) : |
lizard753 | 178:f21d24431d5a | 98 | p1(arg_p1), p2(arg_p2) {}; |
lizard753 | 178:f21d24431d5a | 99 | |
lizard753 | 178:f21d24431d5a | 100 | rect_t(loc_t arg_p1_x, loc_t arg_p1_y, loc_t arg_p2_x, loc_t arg_p2_y) : |
lizard753 | 178:f21d24431d5a | 101 | p1(point_t(arg_p1_x, arg_p1_y)), p2(point_t(arg_p2_x, arg_p2_y)){}; |
lizard753 | 178:f21d24431d5a | 102 | |
lizard753 | 178:f21d24431d5a | 103 | rect_t() : |
lizard753 | 178:f21d24431d5a | 104 | p1(point_t()), p2(point_t()) {}; |
lizard753 | 178:f21d24431d5a | 105 | }; |
WiredHome | 81:01da2e34283d | 106 | |
WiredHome | 125:7a0b70f56550 | 107 | /// Data type that manages the calibration matrix for the resistive touch panel. |
WiredHome | 125:7a0b70f56550 | 108 | /// |
WiredHome | 125:7a0b70f56550 | 109 | /// This object, when instantiated, may be passed back and forth, stored |
WiredHome | 125:7a0b70f56550 | 110 | /// and loaded, but the internals are generally of little interest. |
WiredHome | 167:8aa3fb2a5a31 | 111 | /// |
WiredHome | 77:9206c13aa527 | 112 | typedef struct |
WiredHome | 77:9206c13aa527 | 113 | { |
WiredHome | 125:7a0b70f56550 | 114 | int32_t An; ///< calibration factor, see source for details |
WiredHome | 125:7a0b70f56550 | 115 | int32_t Bn; ///< calibration factor, see source for details |
WiredHome | 125:7a0b70f56550 | 116 | int32_t Cn; ///< calibration factor, see source for details |
WiredHome | 125:7a0b70f56550 | 117 | int32_t Dn; ///< calibration factor, see source for details |
WiredHome | 125:7a0b70f56550 | 118 | int32_t En; ///< calibration factor, see source for details |
WiredHome | 125:7a0b70f56550 | 119 | int32_t Fn; ///< calibration factor, see source for details |
WiredHome | 125:7a0b70f56550 | 120 | int32_t Divider; ///< calibration factor, see source for details |
WiredHome | 77:9206c13aa527 | 121 | } tpMatrix_t; |
WiredHome | 77:9206c13aa527 | 122 | |
WiredHome | 167:8aa3fb2a5a31 | 123 | /// color type definition to let the compiler type-check parameters that |
WiredHome | 167:8aa3fb2a5a31 | 124 | /// are passed to or returned from APIs that use color. |
WiredHome | 32:0e4f2ae512e2 | 125 | /// |
WiredHome | 167:8aa3fb2a5a31 | 126 | /// colors can be easily defined with the @ref RGB(r,g,b) macro, or from |
WiredHome | 167:8aa3fb2a5a31 | 127 | /// the @ref PredefinedColors. |
WiredHome | 32:0e4f2ae512e2 | 128 | /// |
WiredHome | 32:0e4f2ae512e2 | 129 | typedef uint16_t color_t; |
WiredHome | 32:0e4f2ae512e2 | 130 | |
WiredHome | 32:0e4f2ae512e2 | 131 | /// background fill info for drawing Text, Rectangles, RoundedRectanges, Circles, Ellipses and Triangles. |
WiredHome | 32:0e4f2ae512e2 | 132 | typedef enum |
WiredHome | 32:0e4f2ae512e2 | 133 | { |
WiredHome | 32:0e4f2ae512e2 | 134 | NOFILL, ///< do not fill the object with the background color |
WiredHome | 32:0e4f2ae512e2 | 135 | FILL ///< fill the object space with the background color |
WiredHome | 32:0e4f2ae512e2 | 136 | } fill_t; |
WiredHome | 32:0e4f2ae512e2 | 137 | |
WiredHome | 31:c72e12cd5c67 | 138 | #endif // DISPLAYDEFS_H |