mirror of https://github.com/arendst/Tasmota.git
LVGL library updated to v9.0.0, some small breaking changes in C, none in HASPmota (#20659)
* LVGL library updated to v9.0.0, some small breaking changes in C, none in HASPmota * fix compilation * Move lvgl_berry to LVGL_assets
This commit is contained in:
parent
3b0cb408ba
commit
ff6be70ce1
|
@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
### Breaking Changed
|
||||
- Matter aggregator relocated to endpoint 1 for Google compatibility, may break existing associations (#20654)
|
||||
- LVGL library updated to v9.0.0, some small breaking changes in C, none in HASPmota
|
||||
|
||||
### Changed
|
||||
- Library OneWire-Stickbreaker by TasmotaOneWire supporting Shelly Plus Add-On (#20580)
|
||||
|
|
|
@ -8,14 +8,17 @@
|
|||
|
||||
enum {
|
||||
ctypes_i32 = 14,
|
||||
ctypes_i24 = 13,
|
||||
ctypes_i16 = 12,
|
||||
ctypes_i8 = 11,
|
||||
ctypes_u32 = 4,
|
||||
ctypes_u24 = 3,
|
||||
ctypes_u16 = 2,
|
||||
ctypes_u8 = 1,
|
||||
|
||||
// big endian
|
||||
ctypes_be_i32 = -14,
|
||||
ctypes_be_i24 = -13,
|
||||
ctypes_be_i16 = -12,
|
||||
ctypes_be_i8 = -11,
|
||||
ctypes_be_u32 = -4,
|
||||
|
|
|
@ -36,14 +36,17 @@ int32_t bin_search_ctypes(const char * needle, const void * table, size_t elt_si
|
|||
|
||||
enum {
|
||||
ctypes_i32 = 14,
|
||||
ctypes_i24 = 13,
|
||||
ctypes_i16 = 12,
|
||||
ctypes_i8 = 11,
|
||||
ctypes_u32 = 4,
|
||||
ctypes_u24 = 3,
|
||||
ctypes_u16 = 2,
|
||||
ctypes_u8 = 1,
|
||||
|
||||
// big endian
|
||||
ctypes_be_i32 = -14,
|
||||
ctypes_be_i24 = -13,
|
||||
ctypes_be_i16 = -12,
|
||||
ctypes_be_i8 = -11,
|
||||
ctypes_be_u32 = -4,
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -25,6 +25,18 @@ def init(lv_tasmota)
|
|||
lv.register_button_encoder = lv_tasmota.register_button_encoder
|
||||
lv.screenshot = lv_tasmota.screenshot
|
||||
|
||||
# add version information
|
||||
lv.version = lv.version_major()
|
||||
# use the following to retrofit the version:
|
||||
#-
|
||||
def fix_lv_version()
|
||||
import introspect
|
||||
var v = introspect.get(lv, "version")
|
||||
# if `lv.version` does not exist, v is `module('undefined')`
|
||||
if type(v) != 'int' lv.version = 8 end
|
||||
end
|
||||
-#
|
||||
|
||||
# add widgets
|
||||
lv.clock = lv_clock
|
||||
lv.clock_icon = lv_clock_icon
|
||||
|
@ -112,8 +124,7 @@ def splash()
|
|||
tas_logo.set_zoom(150)
|
||||
tas_logo.set_style_img_recolor_opa(255, 0) # lv.PART_MAIN | lv.STATE_DEFAULT
|
||||
tas_logo.set_style_img_recolor(white, 0) # lv.PART_MAIN | lv.STATE_DEFAULT
|
||||
tas_logo.set_align(lv.ALIGN_LEFT_MID)
|
||||
tas_logo.set_x(-12)
|
||||
tas_logo.align(lv.ALIGN_LEFT_MID, -12, 0)
|
||||
|
||||
var tas = lv.label(bg)
|
||||
# tas.set_style_bg_opa(lv.OPA_TRANSP, lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
|
|
|
@ -88,7 +88,7 @@ class lv_obj end # for solidification
|
|||
#@ solidify:lv_signal_arcs,weak
|
||||
class lv_signal_arcs : lv_obj
|
||||
var percentage # value to display, range 0..100
|
||||
var p1, p2, area, arc_dsc # instances of objects kept to avoid re-instanciating at each call
|
||||
var area, arc_dsc # instances of objects kept to avoid re-instanciating at each call
|
||||
|
||||
def init(parent)
|
||||
# init custom widget (don't call super constructor)
|
||||
|
@ -96,8 +96,6 @@ class lv_signal_arcs : lv_obj
|
|||
# own values
|
||||
self.percentage = 100
|
||||
# pre-allocate buffers
|
||||
self.p1 = lv.point()
|
||||
self.p2 = lv.point()
|
||||
self.area = lv.area()
|
||||
self.arc_dsc = lv.draw_arc_dsc()
|
||||
end
|
||||
|
@ -105,7 +103,7 @@ class lv_signal_arcs : lv_obj
|
|||
def widget_event(cl, event)
|
||||
# Call the ancestor's event handler
|
||||
if lv.obj_event_base(cl, event) != lv.RES_OK return end
|
||||
var code = event.code
|
||||
var code = event.get_code()
|
||||
|
||||
import math
|
||||
def atleast1(x) if x >= 1 return x else return 1 end end
|
||||
|
@ -119,18 +117,20 @@ class lv_signal_arcs : lv_obj
|
|||
#print("inter_bar", inter_bar, "bar", bar, "bar_offset", bar_offset)
|
||||
|
||||
if code == lv.EVENT_DRAW_MAIN
|
||||
var draw_ctx = lv.draw_ctx(event.param)
|
||||
var arc_dsc = self.arc_dsc
|
||||
var param = event.get_param()
|
||||
var layer = event.get_layer()
|
||||
|
||||
# get coordinates of object
|
||||
self.get_coords(self.area)
|
||||
var x_ofs = self.area.x1
|
||||
var y_ofs = self.area.y1
|
||||
|
||||
lv.draw_arc_dsc_init(self.arc_dsc) # initialize lv.draw_line_dsc structure
|
||||
self.init_draw_arc_dsc(lv.PART_MAIN, self.arc_dsc) # copy the current values
|
||||
lv.draw_arc_dsc_init(arc_dsc) # initialize lv.draw_line_dsc structure
|
||||
self.init_draw_arc_dsc(lv.PART_MAIN, arc_dsc) # copy the current values
|
||||
|
||||
self.arc_dsc.rounded = 1
|
||||
self.arc_dsc.width = (bar * 3 + 1) / 4
|
||||
arc_dsc.rounded = 1
|
||||
arc_dsc.width = (bar * 3 + 1) / 4
|
||||
var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
|
||||
|
@ -144,15 +144,26 @@ class lv_signal_arcs : lv_obj
|
|||
if (angle > 45) angle = 45 end
|
||||
|
||||
# print("hypotenuse",hypotenuse,"adjacent",adjacent,"angle",angle)
|
||||
self.p1.x = x_ofs + width / 2
|
||||
self.p1.y = y_ofs + height - 1 - bar_offset
|
||||
arc_dsc.center_x = x_ofs + width / 2
|
||||
arc_dsc.center_y = y_ofs + height - 1 - bar_offset
|
||||
|
||||
self.arc_dsc.color = self.percentage >= 25 ? on_color : off_color
|
||||
lv.draw_arc(draw_ctx, self.arc_dsc, self.p1, 0 * (bar + inter_bar) + bar_offset, 0, 360)
|
||||
self.arc_dsc.color = self.percentage >= 50 ? on_color : off_color
|
||||
lv.draw_arc(draw_ctx, self.arc_dsc, self.p1, 1 * (bar + inter_bar) + bar_offset - 1, 270 - angle, 270 + angle)
|
||||
self.arc_dsc.color = self.percentage >= 75 ? on_color : off_color
|
||||
lv.draw_arc(draw_ctx, self.arc_dsc, self.p1, 2 * (bar + inter_bar) + bar_offset - 2, 270 - angle, 270 + angle)
|
||||
arc_dsc.color = self.percentage >= 25 ? on_color : off_color
|
||||
arc_dsc.radius = 0 * (bar + inter_bar) + bar_offset
|
||||
arc_dsc.start_angle = 0
|
||||
arc_dsc.end_angle = 306
|
||||
lv.draw_arc(layer, arc_dsc)
|
||||
|
||||
arc_dsc.radius = 1 * (bar + inter_bar) + bar_offset - 1
|
||||
arc_dsc.start_angle = 270 - angle
|
||||
arc_dsc.end_angle = 270 + angle
|
||||
arc_dsc.color = self.percentage >= 50 ? on_color : off_color
|
||||
lv.draw_arc(layer, arc_dsc)
|
||||
|
||||
arc_dsc.radius = 2 * (bar + inter_bar) + bar_offset - 2
|
||||
arc_dsc.start_angle = 270 - angle
|
||||
arc_dsc.end_angle = 270 + angle
|
||||
arc_dsc.color = self.percentage >= 75 ? on_color : off_color
|
||||
lv.draw_arc(layer, arc_dsc)
|
||||
|
||||
#elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object
|
||||
# self.ancestor_design.call(self, clip_area, mode)
|
||||
|
@ -221,7 +232,7 @@ end
|
|||
#@ solidify:lv_signal_bars,weak
|
||||
class lv_signal_bars : lv_obj
|
||||
var percentage # value to display, range 0..100
|
||||
var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call
|
||||
var area, line_dsc # instances of objects kept to avoid re-instanciating at each call
|
||||
|
||||
def init(parent)
|
||||
# init custom widget (don't call super constructor)
|
||||
|
@ -229,16 +240,15 @@ class lv_signal_bars : lv_obj
|
|||
# own values
|
||||
self.percentage = 100
|
||||
# pre-allocate buffers
|
||||
self.p1 = lv.point()
|
||||
self.p2 = lv.point()
|
||||
self.area = lv.area()
|
||||
self.line_dsc = lv.draw_line_dsc()
|
||||
end
|
||||
|
||||
def widget_event(cl, event)
|
||||
# Call the ancestor's event handler
|
||||
# tasmota.log(f">>>: widget_event {cl=} {event=}")
|
||||
if lv.obj_event_base(cl, event) != lv.RES_OK return end
|
||||
var code = event.code
|
||||
var code = event.get_code()
|
||||
|
||||
def atleast1(x) if x >= 1 return x else return 1 end end
|
||||
# the model is that we have 4 bars and inter-bar (1/4 of width)
|
||||
|
@ -250,32 +260,34 @@ class lv_signal_bars : lv_obj
|
|||
var bar_offset = bar / 2
|
||||
|
||||
if code == lv.EVENT_DRAW_MAIN
|
||||
var draw_ctx = lv.draw_ctx(event.param)
|
||||
var line_dsc = self.line_dsc
|
||||
var param = event.get_param()
|
||||
var layer = event.get_layer()
|
||||
|
||||
# get coordinates of object
|
||||
self.get_coords(self.area)
|
||||
var x_ofs = self.area.x1
|
||||
var y_ofs = self.area.y1
|
||||
|
||||
lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure
|
||||
self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) # copy the current values
|
||||
lv.draw_line_dsc_init(line_dsc) # initialize lv_draw_line_dsc structure
|
||||
self.init_draw_line_dsc(lv.PART_MAIN, line_dsc) # copy the current values
|
||||
|
||||
self.line_dsc.round_start = 1
|
||||
self.line_dsc.round_end = 1
|
||||
self.line_dsc.width = bar
|
||||
line_dsc.round_start = 1
|
||||
line_dsc.round_end = 1
|
||||
line_dsc.width = bar
|
||||
var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT)
|
||||
|
||||
lv.event_send(self, lv.EVENT_DRAW_PART_BEGIN, self.line_dsc)
|
||||
# lv.event_send(self, lv.EVENT_DRAW_PART_BEGIN, line_dsc)
|
||||
for i:0..3 # 4 bars
|
||||
self.line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color
|
||||
self.p1.y = y_ofs + height - 1 - bar_offset
|
||||
self.p1.x = x_ofs + i * (bar + inter_bar) + bar_offset
|
||||
self.p2.y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset
|
||||
self.p2.x = self.p1.x
|
||||
lv.draw_line(draw_ctx, self.line_dsc, self.p1, self.p2)
|
||||
line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color
|
||||
line_dsc.p1_y = y_ofs + height - 1 - bar_offset
|
||||
line_dsc.p1_x = x_ofs + i * (bar + inter_bar) + bar_offset
|
||||
line_dsc.p2_y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset
|
||||
line_dsc.p2_x = line_dsc.p1_x
|
||||
lv.draw_line(layer, line_dsc)
|
||||
end
|
||||
lv.event_send(self, lv.EVENT_DRAW_PART_END, self.line_dsc)
|
||||
# lv.event_send(self, lv.EVENT_DRAW_PART_END, line_dsc)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ be_local_closure(lv_tasmota_init, /* name */
|
|||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[33]) { /* constants */
|
||||
( &(const bvalue[35]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(lv),
|
||||
/* K1 */ be_nested_str_weak(start),
|
||||
/* K2 */ be_nested_str_weak(splash_init),
|
||||
|
@ -32,29 +32,31 @@ be_local_closure(lv_tasmota_init, /* name */
|
|||
/* K11 */ be_nested_str_weak(load_freetype_font),
|
||||
/* K12 */ be_nested_str_weak(register_button_encoder),
|
||||
/* K13 */ be_nested_str_weak(screenshot),
|
||||
/* K14 */ be_nested_str_weak(clock),
|
||||
/* K15 */ be_nested_str_weak(lv_clock),
|
||||
/* K16 */ be_nested_str_weak(clock_icon),
|
||||
/* K17 */ be_nested_str_weak(lv_clock_icon),
|
||||
/* K18 */ be_nested_str_weak(signal_arcs),
|
||||
/* K19 */ be_nested_str_weak(lv_signal_arcs),
|
||||
/* K20 */ be_nested_str_weak(signal_bars),
|
||||
/* K21 */ be_nested_str_weak(lv_signal_bars),
|
||||
/* K22 */ be_nested_str_weak(wifi_arcs_icon),
|
||||
/* K23 */ be_nested_str_weak(lv_wifi_arcs_icon),
|
||||
/* K24 */ be_nested_str_weak(wifi_arcs),
|
||||
/* K25 */ be_nested_str_weak(lv_wifi_arcs),
|
||||
/* K26 */ be_nested_str_weak(wifi_bars_icon),
|
||||
/* K27 */ be_nested_str_weak(lv_wifi_bars_icon),
|
||||
/* K28 */ be_nested_str_weak(wifi_bars),
|
||||
/* K29 */ be_nested_str_weak(lv_wifi_bars),
|
||||
/* K30 */ be_nested_str_weak(tasmota),
|
||||
/* K31 */ be_nested_str_weak(get_option),
|
||||
/* K32 */ be_const_int(0),
|
||||
/* K14 */ be_nested_str_weak(version),
|
||||
/* K15 */ be_nested_str_weak(version_major),
|
||||
/* K16 */ be_nested_str_weak(clock),
|
||||
/* K17 */ be_nested_str_weak(lv_clock),
|
||||
/* K18 */ be_nested_str_weak(clock_icon),
|
||||
/* K19 */ be_nested_str_weak(lv_clock_icon),
|
||||
/* K20 */ be_nested_str_weak(signal_arcs),
|
||||
/* K21 */ be_nested_str_weak(lv_signal_arcs),
|
||||
/* K22 */ be_nested_str_weak(signal_bars),
|
||||
/* K23 */ be_nested_str_weak(lv_signal_bars),
|
||||
/* K24 */ be_nested_str_weak(wifi_arcs_icon),
|
||||
/* K25 */ be_nested_str_weak(lv_wifi_arcs_icon),
|
||||
/* K26 */ be_nested_str_weak(wifi_arcs),
|
||||
/* K27 */ be_nested_str_weak(lv_wifi_arcs),
|
||||
/* K28 */ be_nested_str_weak(wifi_bars_icon),
|
||||
/* K29 */ be_nested_str_weak(lv_wifi_bars_icon),
|
||||
/* K30 */ be_nested_str_weak(wifi_bars),
|
||||
/* K31 */ be_nested_str_weak(lv_wifi_bars),
|
||||
/* K32 */ be_nested_str_weak(tasmota),
|
||||
/* K33 */ be_nested_str_weak(get_option),
|
||||
/* K34 */ be_const_int(0),
|
||||
}),
|
||||
be_str_weak(init),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[53]) { /* code */
|
||||
( &(const binstruction[56]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x88080101, // 0001 GETMBR R2 R0 K1
|
||||
0x90060202, // 0002 SETMBR R1 K1 R2
|
||||
|
@ -82,32 +84,35 @@ be_local_closure(lv_tasmota_init, /* name */
|
|||
0x90061802, // 0018 SETMBR R1 K12 R2
|
||||
0x8808010D, // 0019 GETMBR R2 R0 K13
|
||||
0x90061A02, // 001A SETMBR R1 K13 R2
|
||||
0xB80A1E00, // 001B GETNGBL R2 K15
|
||||
0x90061C02, // 001C SETMBR R1 K14 R2
|
||||
0xB80A2200, // 001D GETNGBL R2 K17
|
||||
0x90062002, // 001E SETMBR R1 K16 R2
|
||||
0xB80A2600, // 001F GETNGBL R2 K19
|
||||
0x90062402, // 0020 SETMBR R1 K18 R2
|
||||
0xB80A2A00, // 0021 GETNGBL R2 K21
|
||||
0x90062802, // 0022 SETMBR R1 K20 R2
|
||||
0xB80A2E00, // 0023 GETNGBL R2 K23
|
||||
0x90062C02, // 0024 SETMBR R1 K22 R2
|
||||
0xB80A3200, // 0025 GETNGBL R2 K25
|
||||
0x90063002, // 0026 SETMBR R1 K24 R2
|
||||
0xB80A3600, // 0027 GETNGBL R2 K27
|
||||
0x90063402, // 0028 SETMBR R1 K26 R2
|
||||
0xB80A3A00, // 0029 GETNGBL R2 K29
|
||||
0x90063802, // 002A SETMBR R1 K28 R2
|
||||
0xB80A3C00, // 002B GETNGBL R2 K30
|
||||
0x8C08051F, // 002C GETMET R2 R2 K31
|
||||
0x54120086, // 002D LDINT R4 135
|
||||
0x7C080400, // 002E CALL R2 2
|
||||
0x1C080520, // 002F EQ R2 R2 K32
|
||||
0x780A0001, // 0030 JMPF R2 #0033
|
||||
0x8C080302, // 0031 GETMET R2 R1 K2
|
||||
0x7C080200, // 0032 CALL R2 1
|
||||
0x4C080000, // 0033 LDNIL R2
|
||||
0x80040400, // 0034 RET 1 R2
|
||||
0x8C08030F, // 001B GETMET R2 R1 K15
|
||||
0x7C080200, // 001C CALL R2 1
|
||||
0x90061C02, // 001D SETMBR R1 K14 R2
|
||||
0xB80A2200, // 001E GETNGBL R2 K17
|
||||
0x90062002, // 001F SETMBR R1 K16 R2
|
||||
0xB80A2600, // 0020 GETNGBL R2 K19
|
||||
0x90062402, // 0021 SETMBR R1 K18 R2
|
||||
0xB80A2A00, // 0022 GETNGBL R2 K21
|
||||
0x90062802, // 0023 SETMBR R1 K20 R2
|
||||
0xB80A2E00, // 0024 GETNGBL R2 K23
|
||||
0x90062C02, // 0025 SETMBR R1 K22 R2
|
||||
0xB80A3200, // 0026 GETNGBL R2 K25
|
||||
0x90063002, // 0027 SETMBR R1 K24 R2
|
||||
0xB80A3600, // 0028 GETNGBL R2 K27
|
||||
0x90063402, // 0029 SETMBR R1 K26 R2
|
||||
0xB80A3A00, // 002A GETNGBL R2 K29
|
||||
0x90063802, // 002B SETMBR R1 K28 R2
|
||||
0xB80A3E00, // 002C GETNGBL R2 K31
|
||||
0x90063C02, // 002D SETMBR R1 K30 R2
|
||||
0xB80A4000, // 002E GETNGBL R2 K32
|
||||
0x8C080521, // 002F GETMET R2 R2 K33
|
||||
0x54120086, // 0030 LDINT R4 135
|
||||
0x7C080400, // 0031 CALL R2 2
|
||||
0x1C080522, // 0032 EQ R2 R2 K34
|
||||
0x780A0001, // 0033 JMPF R2 #0036
|
||||
0x8C080302, // 0034 GETMET R2 R1 K2
|
||||
0x7C080200, // 0035 CALL R2 1
|
||||
0x4C080000, // 0036 LDNIL R2
|
||||
0x80040400, // 0037 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -297,7 +302,7 @@ be_local_closure(lv_tasmota_splash, /* name */
|
|||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[42]) { /* constants */
|
||||
( &(const bvalue[43]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(display),
|
||||
/* K1 */ be_nested_str_weak(started),
|
||||
/* K2 */ be_nested_str_weak(lv),
|
||||
|
@ -323,27 +328,28 @@ be_local_closure(lv_tasmota_splash, /* name */
|
|||
/* K22 */ be_nested_str_weak(set_zoom),
|
||||
/* K23 */ be_nested_str_weak(set_style_img_recolor_opa),
|
||||
/* K24 */ be_nested_str_weak(set_style_img_recolor),
|
||||
/* K25 */ be_nested_str_weak(set_align),
|
||||
/* K25 */ be_nested_str_weak(align),
|
||||
/* K26 */ be_nested_str_weak(ALIGN_LEFT_MID),
|
||||
/* K27 */ be_nested_str_weak(set_x),
|
||||
/* K28 */ be_nested_str_weak(label),
|
||||
/* K29 */ be_nested_str_weak(set_style_text_color),
|
||||
/* K30 */ be_nested_str_weak(set_text),
|
||||
/* K31 */ be_nested_str_weak(TASMOTA),
|
||||
/* K32 */ be_nested_str_weak(get_hor_res),
|
||||
/* K33 */ be_nested_str_weak(set_style_text_font),
|
||||
/* K34 */ be_nested_str_weak(driver_name),
|
||||
/* K35 */ be_nested_str_weak(ALIGN_BOTTOM_MID),
|
||||
/* K36 */ be_const_int(16777215),
|
||||
/* K37 */ be_nested_str_weak(refr_now),
|
||||
/* K38 */ be_nested_str_weak(_splash),
|
||||
/* K39 */ be_nested_str_weak(tasmota),
|
||||
/* K40 */ be_nested_str_weak(set_timer),
|
||||
/* K41 */ be_nested_str_weak(splash_remove),
|
||||
/* K27 */ be_nested_str_weak(label),
|
||||
/* K28 */ be_nested_str_weak(set_style_text_color),
|
||||
/* K29 */ be_nested_str_weak(set_text),
|
||||
/* K30 */ be_nested_str_weak(TASMOTA),
|
||||
/* K31 */ be_nested_str_weak(get_hor_res),
|
||||
/* K32 */ be_nested_str_weak(set_style_text_font),
|
||||
/* K33 */ be_nested_str_weak(set_align),
|
||||
/* K34 */ be_nested_str_weak(set_x),
|
||||
/* K35 */ be_nested_str_weak(driver_name),
|
||||
/* K36 */ be_nested_str_weak(ALIGN_BOTTOM_MID),
|
||||
/* K37 */ be_const_int(16777215),
|
||||
/* K38 */ be_nested_str_weak(refr_now),
|
||||
/* K39 */ be_nested_str_weak(_splash),
|
||||
/* K40 */ be_nested_str_weak(tasmota),
|
||||
/* K41 */ be_nested_str_weak(set_timer),
|
||||
/* K42 */ be_nested_str_weak(splash_remove),
|
||||
}),
|
||||
be_str_weak(splash),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[166]) { /* code */
|
||||
( &(const binstruction[165]) { /* code */
|
||||
0xA4020000, // 0000 IMPORT R0 K0
|
||||
0x8C040101, // 0001 GETMET R1 R0 K1
|
||||
0x7C040200, // 0002 CALL R1 1
|
||||
|
@ -427,89 +433,88 @@ be_local_closure(lv_tasmota_splash, /* name */
|
|||
0x8C180B19, // 0050 GETMET R6 R5 K25
|
||||
0xB8220400, // 0051 GETNGBL R8 K2
|
||||
0x8820111A, // 0052 GETMBR R8 R8 K26
|
||||
0x7C180400, // 0053 CALL R6 2
|
||||
0x8C180B1B, // 0054 GETMET R6 R5 K27
|
||||
0x5421FFF3, // 0055 LDINT R8 -12
|
||||
0x7C180400, // 0056 CALL R6 2
|
||||
0xB81A0400, // 0057 GETNGBL R6 K2
|
||||
0x8C180D1C, // 0058 GETMET R6 R6 K28
|
||||
0x5C200200, // 0059 MOVE R8 R1
|
||||
0x7C180400, // 005A CALL R6 2
|
||||
0x8C1C0D1D, // 005B GETMET R7 R6 K29
|
||||
0x5C240800, // 005C MOVE R9 R4
|
||||
0x5828000A, // 005D LDCONST R10 K10
|
||||
0x7C1C0600, // 005E CALL R7 3
|
||||
0x8C1C0D1E, // 005F GETMET R7 R6 K30
|
||||
0x5824001F, // 0060 LDCONST R9 K31
|
||||
0x7C1C0400, // 0061 CALL R7 2
|
||||
0xB81E0400, // 0062 GETNGBL R7 K2
|
||||
0x8C1C0F20, // 0063 GETMET R7 R7 K32
|
||||
0x7C1C0200, // 0064 CALL R7 1
|
||||
0x542200C7, // 0065 LDINT R8 200
|
||||
0x281C0E08, // 0066 GE R7 R7 R8
|
||||
0x781E0007, // 0067 JMPF R7 #0070
|
||||
0x4C1C0000, // 0068 LDNIL R7
|
||||
0x201C0407, // 0069 NE R7 R2 R7
|
||||
0x781E0003, // 006A JMPF R7 #006F
|
||||
0x8C1C0D21, // 006B GETMET R7 R6 K33
|
||||
0x5C240400, // 006C MOVE R9 R2
|
||||
0x5828000A, // 006D LDCONST R10 K10
|
||||
0x7C1C0600, // 006E CALL R7 3
|
||||
0x70020006, // 006F JMP #0077
|
||||
0x4C1C0000, // 0070 LDNIL R7
|
||||
0x201C0607, // 0071 NE R7 R3 R7
|
||||
0x781E0003, // 0072 JMPF R7 #0077
|
||||
0x8C1C0D21, // 0073 GETMET R7 R6 K33
|
||||
0x5C240600, // 0074 MOVE R9 R3
|
||||
0x5828000A, // 0075 LDCONST R10 K10
|
||||
0x7C1C0600, // 0076 CALL R7 3
|
||||
0x8C1C0D19, // 0077 GETMET R7 R6 K25
|
||||
0xB8260400, // 0078 GETNGBL R9 K2
|
||||
0x8824131A, // 0079 GETMBR R9 R9 K26
|
||||
0x7C1C0400, // 007A CALL R7 2
|
||||
0x8C1C0D1B, // 007B GETMET R7 R6 K27
|
||||
0x54260029, // 007C LDINT R9 42
|
||||
0x7C1C0400, // 007D CALL R7 2
|
||||
0x8C1C0122, // 007E GETMET R7 R0 K34
|
||||
0x7C1C0200, // 007F CALL R7 1
|
||||
0x4C200000, // 0080 LDNIL R8
|
||||
0x6024000C, // 0081 GETGBL R9 G12
|
||||
0x5C280E00, // 0082 MOVE R10 R7
|
||||
0x7C240200, // 0083 CALL R9 1
|
||||
0x2424130A, // 0084 GT R9 R9 K10
|
||||
0x78260012, // 0085 JMPF R9 #0099
|
||||
0xB8260400, // 0086 GETNGBL R9 K2
|
||||
0x8C24131C, // 0087 GETMET R9 R9 K28
|
||||
0x5C2C0200, // 0088 MOVE R11 R1
|
||||
0x7C240400, // 0089 CALL R9 2
|
||||
0x5C201200, // 008A MOVE R8 R9
|
||||
0x8C241119, // 008B GETMET R9 R8 K25
|
||||
0xB82E0400, // 008C GETNGBL R11 K2
|
||||
0x882C1723, // 008D GETMBR R11 R11 K35
|
||||
0x7C240400, // 008E CALL R9 2
|
||||
0x8C24111D, // 008F GETMET R9 R8 K29
|
||||
0xB82E0400, // 0090 GETNGBL R11 K2
|
||||
0x8C2C1707, // 0091 GETMET R11 R11 K7
|
||||
0x58340024, // 0092 LDCONST R13 K36
|
||||
0x7C2C0400, // 0093 CALL R11 2
|
||||
0x5830000A, // 0094 LDCONST R12 K10
|
||||
0x7C240600, // 0095 CALL R9 3
|
||||
0x8C24111E, // 0096 GETMET R9 R8 K30
|
||||
0x5C2C0E00, // 0097 MOVE R11 R7
|
||||
0x7C240400, // 0098 CALL R9 2
|
||||
0xB8260400, // 0099 GETNGBL R9 K2
|
||||
0x8C241325, // 009A GETMET R9 R9 K37
|
||||
0x582C000A, // 009B LDCONST R11 K10
|
||||
0x7C240400, // 009C CALL R9 2
|
||||
0xB8260400, // 009D GETNGBL R9 K2
|
||||
0x90264C01, // 009E SETMBR R9 K38 R1
|
||||
0xB8264E00, // 009F GETNGBL R9 K39
|
||||
0x8C241328, // 00A0 GETMET R9 R9 K40
|
||||
0x542E1387, // 00A1 LDINT R11 5000
|
||||
0xB8320400, // 00A2 GETNGBL R12 K2
|
||||
0x88301929, // 00A3 GETMBR R12 R12 K41
|
||||
0x7C240600, // 00A4 CALL R9 3
|
||||
0x80000000, // 00A5 RET 0
|
||||
0x5425FFF3, // 0053 LDINT R9 -12
|
||||
0x5828000A, // 0054 LDCONST R10 K10
|
||||
0x7C180800, // 0055 CALL R6 4
|
||||
0xB81A0400, // 0056 GETNGBL R6 K2
|
||||
0x8C180D1B, // 0057 GETMET R6 R6 K27
|
||||
0x5C200200, // 0058 MOVE R8 R1
|
||||
0x7C180400, // 0059 CALL R6 2
|
||||
0x8C1C0D1C, // 005A GETMET R7 R6 K28
|
||||
0x5C240800, // 005B MOVE R9 R4
|
||||
0x5828000A, // 005C LDCONST R10 K10
|
||||
0x7C1C0600, // 005D CALL R7 3
|
||||
0x8C1C0D1D, // 005E GETMET R7 R6 K29
|
||||
0x5824001E, // 005F LDCONST R9 K30
|
||||
0x7C1C0400, // 0060 CALL R7 2
|
||||
0xB81E0400, // 0061 GETNGBL R7 K2
|
||||
0x8C1C0F1F, // 0062 GETMET R7 R7 K31
|
||||
0x7C1C0200, // 0063 CALL R7 1
|
||||
0x542200C7, // 0064 LDINT R8 200
|
||||
0x281C0E08, // 0065 GE R7 R7 R8
|
||||
0x781E0007, // 0066 JMPF R7 #006F
|
||||
0x4C1C0000, // 0067 LDNIL R7
|
||||
0x201C0407, // 0068 NE R7 R2 R7
|
||||
0x781E0003, // 0069 JMPF R7 #006E
|
||||
0x8C1C0D20, // 006A GETMET R7 R6 K32
|
||||
0x5C240400, // 006B MOVE R9 R2
|
||||
0x5828000A, // 006C LDCONST R10 K10
|
||||
0x7C1C0600, // 006D CALL R7 3
|
||||
0x70020006, // 006E JMP #0076
|
||||
0x4C1C0000, // 006F LDNIL R7
|
||||
0x201C0607, // 0070 NE R7 R3 R7
|
||||
0x781E0003, // 0071 JMPF R7 #0076
|
||||
0x8C1C0D20, // 0072 GETMET R7 R6 K32
|
||||
0x5C240600, // 0073 MOVE R9 R3
|
||||
0x5828000A, // 0074 LDCONST R10 K10
|
||||
0x7C1C0600, // 0075 CALL R7 3
|
||||
0x8C1C0D21, // 0076 GETMET R7 R6 K33
|
||||
0xB8260400, // 0077 GETNGBL R9 K2
|
||||
0x8824131A, // 0078 GETMBR R9 R9 K26
|
||||
0x7C1C0400, // 0079 CALL R7 2
|
||||
0x8C1C0D22, // 007A GETMET R7 R6 K34
|
||||
0x54260029, // 007B LDINT R9 42
|
||||
0x7C1C0400, // 007C CALL R7 2
|
||||
0x8C1C0123, // 007D GETMET R7 R0 K35
|
||||
0x7C1C0200, // 007E CALL R7 1
|
||||
0x4C200000, // 007F LDNIL R8
|
||||
0x6024000C, // 0080 GETGBL R9 G12
|
||||
0x5C280E00, // 0081 MOVE R10 R7
|
||||
0x7C240200, // 0082 CALL R9 1
|
||||
0x2424130A, // 0083 GT R9 R9 K10
|
||||
0x78260012, // 0084 JMPF R9 #0098
|
||||
0xB8260400, // 0085 GETNGBL R9 K2
|
||||
0x8C24131B, // 0086 GETMET R9 R9 K27
|
||||
0x5C2C0200, // 0087 MOVE R11 R1
|
||||
0x7C240400, // 0088 CALL R9 2
|
||||
0x5C201200, // 0089 MOVE R8 R9
|
||||
0x8C241121, // 008A GETMET R9 R8 K33
|
||||
0xB82E0400, // 008B GETNGBL R11 K2
|
||||
0x882C1724, // 008C GETMBR R11 R11 K36
|
||||
0x7C240400, // 008D CALL R9 2
|
||||
0x8C24111C, // 008E GETMET R9 R8 K28
|
||||
0xB82E0400, // 008F GETNGBL R11 K2
|
||||
0x8C2C1707, // 0090 GETMET R11 R11 K7
|
||||
0x58340025, // 0091 LDCONST R13 K37
|
||||
0x7C2C0400, // 0092 CALL R11 2
|
||||
0x5830000A, // 0093 LDCONST R12 K10
|
||||
0x7C240600, // 0094 CALL R9 3
|
||||
0x8C24111D, // 0095 GETMET R9 R8 K29
|
||||
0x5C2C0E00, // 0096 MOVE R11 R7
|
||||
0x7C240400, // 0097 CALL R9 2
|
||||
0xB8260400, // 0098 GETNGBL R9 K2
|
||||
0x8C241326, // 0099 GETMET R9 R9 K38
|
||||
0x582C000A, // 009A LDCONST R11 K10
|
||||
0x7C240400, // 009B CALL R9 2
|
||||
0xB8260400, // 009C GETNGBL R9 K2
|
||||
0x90264E01, // 009D SETMBR R9 K39 R1
|
||||
0xB8265000, // 009E GETNGBL R9 K40
|
||||
0x8C241329, // 009F GETMET R9 R9 K41
|
||||
0x542E1387, // 00A0 LDINT R11 5000
|
||||
0xB8320400, // 00A1 GETNGBL R12 K2
|
||||
0x8830192A, // 00A2 GETMBR R12 R12 K42
|
||||
0x7C240600, // 00A3 CALL R9 3
|
||||
0x80000000, // 00A4 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,267 +0,0 @@
|
|||
#include "Adafruit_LvGL_Glue.h"
|
||||
#include <lvgl.h>
|
||||
#include "lv_berry.h"
|
||||
|
||||
// ARCHITECTURE-SPECIFIC TIMER STUFF ---------------------------------------
|
||||
|
||||
extern void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p);
|
||||
|
||||
// Tick interval for LittlevGL internal timekeeping; 1 to 10 ms recommended
|
||||
static const int lv_tick_interval_ms = 5;
|
||||
|
||||
static void lv_tick_handler(void) { lv_tick_inc(lv_tick_interval_ms); }
|
||||
|
||||
// TOUCHSCREEN STUFF -------------------------------------------------------
|
||||
|
||||
|
||||
uint32_t Touch_Status(int32_t sel);
|
||||
|
||||
static void touchscreen_read(lv_indev_drv_t *indev_drv, lv_indev_data_t *data) {
|
||||
data->point.x = Touch_Status(1); // Last-pressed coordinates
|
||||
data->point.y = Touch_Status(2);
|
||||
data->state = Touch_Status(0) ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
|
||||
data->continue_reading = false; /*No buffering now so no more data read*/
|
||||
// keep data for TS calibration
|
||||
lv_ts_calibration.state = data->state;
|
||||
if (data->state == LV_INDEV_STATE_PRESSED) { // if not pressed, the data may be invalid
|
||||
lv_ts_calibration.x = data->point.x;
|
||||
lv_ts_calibration.y = data->point.y;
|
||||
lv_ts_calibration.raw_x = Touch_Status(-1);
|
||||
lv_ts_calibration.raw_y = Touch_Status(-2);
|
||||
}
|
||||
}
|
||||
|
||||
// OTHER LITTLEVGL VITALS --------------------------------------------------
|
||||
|
||||
#if LV_COLOR_DEPTH != 16
|
||||
#pragma error("LV_COLOR_DEPTH must be 16")
|
||||
#endif
|
||||
// This isn't necessarily true, don't mention it for now. See notes later.
|
||||
//#if LV_COLOR_16_SWAP != 0
|
||||
// #pragma message("Set LV_COLOR_16_SWAP to 0 for best display performance")
|
||||
//#endif
|
||||
|
||||
// Actual RAM usage will be 2X these figures, since using 2 DMA buffers...
|
||||
#define LV_BUFFER_ROWS 60 // Most others have a bit more space
|
||||
|
||||
|
||||
// // This is the flush function required for LittlevGL screen updates.
|
||||
// // It receives a bounding rect and an array of pixel data (conveniently
|
||||
// // already in 565 format, so the Earth was lucky there).
|
||||
// static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) {
|
||||
// // Get pointer to glue object from indev user data
|
||||
// Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)disp->user_data;
|
||||
|
||||
// uint16_t width = (area->x2 - area->x1 + 1);
|
||||
// uint16_t height = (area->y2 - area->y1 + 1);
|
||||
|
||||
// // check if we are currently doing a screenshot
|
||||
// if (glue->getScreenshotFile() != nullptr) {
|
||||
// // save pixels to file
|
||||
// int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8;
|
||||
// while (btw > 0) {
|
||||
// int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw);
|
||||
// if (ret >= 0) {
|
||||
// btw -= ret;
|
||||
// } else {
|
||||
// btw = 0; // abort
|
||||
// }
|
||||
// }
|
||||
// lv_disp_flush_ready(disp);
|
||||
// return; // ok
|
||||
// // }
|
||||
|
||||
// Renderer *display = glue->display;
|
||||
|
||||
// if (!glue->first_frame) {
|
||||
// //display->dmaWait(); // Wait for prior DMA transfer to complete
|
||||
// //display->endWrite(); // End transaction from any prior call
|
||||
// } else {
|
||||
// glue->first_frame = false;
|
||||
// }
|
||||
|
||||
// display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height);
|
||||
// display->pushColors((uint16_t *)color_p, width * height, true);
|
||||
// display->setAddrWindow(0,0,0,0);
|
||||
|
||||
// lv_disp_flush_ready(disp);
|
||||
|
||||
// }
|
||||
|
||||
// #if (LV_USE_LOG)
|
||||
// // Optional LittlevGL debug print function, writes to Serial if debug is
|
||||
// // enabled when calling glue begin() function.
|
||||
// static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, const char *fname,
|
||||
// const char *dsc) {
|
||||
// Serial.print(file);
|
||||
// Serial.write('@');
|
||||
// Serial.print(line);
|
||||
// Serial.print(":");
|
||||
// Serial.print(fname);
|
||||
// Serial.write("->");
|
||||
// Serial.println(dsc);
|
||||
// }
|
||||
// #endif
|
||||
|
||||
|
||||
// GLUE LIB FUNCTIONS ------------------------------------------------------
|
||||
|
||||
// Constructor
|
||||
/**
|
||||
* @brief Construct a new Adafruit_LvGL_Glue::Adafruit_LvGL_Glue object,
|
||||
* initializing minimal variables
|
||||
*
|
||||
*/
|
||||
Adafruit_LvGL_Glue::Adafruit_LvGL_Glue(void)
|
||||
: first_frame(true), lv_pixel_buf(NULL) {
|
||||
}
|
||||
|
||||
// Destructor
|
||||
/**
|
||||
* @brief Destroy the Adafruit_LvGL_Glue::Adafruit_LvGL_Glue object, freeing any
|
||||
* memory previously allocated within this library.
|
||||
*
|
||||
*/
|
||||
Adafruit_LvGL_Glue::~Adafruit_LvGL_Glue(void) {
|
||||
delete[] lv_pixel_buf;
|
||||
// Probably other stuff that could be deallocated here
|
||||
}
|
||||
|
||||
// begin() function is overloaded for STMPE610 touch, ADC touch, or none.
|
||||
|
||||
// Pass in POINTERS to ALREADY INITIALIZED display & touch objects (user code
|
||||
// should have previously called corresponding begin() functions and checked
|
||||
// return states before invoking this),
|
||||
// they are NOT initialized here. Debug arg is
|
||||
// touch arg can be NULL (or left off) if using LittlevGL as a passive widget
|
||||
// display.
|
||||
|
||||
/**
|
||||
* @brief Configure the glue layer and the underlying LvGL code to use the given
|
||||
* TFT display driver instance and touchscreen controller
|
||||
*
|
||||
* @param tft Pointer to an **already initialized** display object instance
|
||||
* @param touch Pointer to an **already initialized** `Adafruit_STMPE610`
|
||||
* touchscreen controller object instance
|
||||
* @param debug Debug flag to enable debug messages. Only used if LV_USE_LOG is
|
||||
* configured in LittleLVGL's lv_conf.h
|
||||
* @return LvGLStatus The status of the initialization:
|
||||
* * LVGL_OK : Success
|
||||
* * LVGL_ERR_TIMER : Failure to set up timers
|
||||
* * LVGL_ERR_ALLOC : Failure to allocate memory
|
||||
*/
|
||||
// LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft,
|
||||
// Adafruit_STMPE610 *touch, bool debug) {
|
||||
// is_adc_touch = false;
|
||||
// return begin(tft, (void *)touch, debug);
|
||||
// }
|
||||
/**
|
||||
* @brief Configure the glue layer and the underlying LvGL code to use the given
|
||||
* TFT display driver and touchscreen controller instances
|
||||
*
|
||||
* @param tft Pointer to an **already initialized** display object instance
|
||||
* @param touch Pointer to an **already initialized** `TouchScreen` touchscreen
|
||||
* controller object instance
|
||||
* @param debug Debug flag to enable debug messages. Only used if LV_USE_LOG is
|
||||
* configured in LittleLVGL's lv_conf.h
|
||||
* @return LvGLStatus The status of the initialization:
|
||||
* * LVGL_OK : Success
|
||||
* * LVGL_ERR_TIMER : Failure to set up timers
|
||||
* * LVGL_ERR_ALLOC : Failure to allocate memory
|
||||
*/
|
||||
// LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft, TouchScreen *touch,
|
||||
// bool debug) {
|
||||
// is_adc_touch = true;
|
||||
// return begin(tft, (void *)touch, debug);
|
||||
// }
|
||||
/**
|
||||
* @brief Configure the glue layer and the underlying LvGL code to use the given
|
||||
* TFT display driver and touchscreen controller instances
|
||||
*
|
||||
* @param tft Pointer to an **already initialized** display object instance
|
||||
* @param debug Debug flag to enable debug messages. Only used if LV_USE_LOG is
|
||||
* configured in LittleLVGL's lv_conf.h
|
||||
* @return LvGLStatus The status of the initialization:
|
||||
* * LVGL_OK : Success
|
||||
* * LVGL_ERR_TIMER : Failure to set up timers
|
||||
* * LVGL_ERR_ALLOC : Failure to allocate memory
|
||||
*/
|
||||
LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, bool debug) {
|
||||
return begin(tft, (void *)NULL, debug);
|
||||
}
|
||||
|
||||
LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) {
|
||||
|
||||
lv_init();
|
||||
|
||||
// Allocate LvGL display buffer (x2 because DMA double buffering)
|
||||
LvGLStatus status = LVGL_ERR_ALLOC;
|
||||
// if ((lv_pixel_buf = new lv_color_t[LV_HOR_RES_MAX * LV_BUFFER_ROWS * 2])) {
|
||||
|
||||
uint32_t lvgl_buffer_size;
|
||||
|
||||
//lvgl_buffer_size = LV_HOR_RES_MAX * LV_BUFFER_ROWS;
|
||||
uint8_t flushlines = tft->lvgl_pars()->fluslines;
|
||||
lvgl_buffer_size = tft->width() * (flushlines ? flushlines:LV_BUFFER_ROWS);
|
||||
if (tft->lvgl_pars()->use_dma) {
|
||||
lvgl_buffer_size /= 2;
|
||||
if (lvgl_buffer_size < 1000000) {
|
||||
lv_pixel_buf2 = new lv_color_t[lvgl_buffer_size];
|
||||
}
|
||||
if (!lv_pixel_buf2) {
|
||||
return status;
|
||||
}
|
||||
} else {
|
||||
lv_pixel_buf2 = nullptr;
|
||||
}
|
||||
|
||||
if ((lv_pixel_buf = new lv_color_t[lvgl_buffer_size])) {
|
||||
|
||||
display = tft;
|
||||
touchscreen = (void *)touch;
|
||||
|
||||
// // Initialize LvGL display buffers
|
||||
// lv_disp_buf_init(
|
||||
// &lv_disp_buf, lv_pixel_buf, // 1st half buf
|
||||
// &lv_pixel_buf[LV_HOR_RES_MAX * LV_BUFFER_ROWS], // 2nd half buf
|
||||
// LV_HOR_RES_MAX * LV_BUFFER_ROWS);
|
||||
|
||||
// Initialize LvGL display buffers
|
||||
lv_disp_draw_buf_init(
|
||||
&lv_disp_buf, lv_pixel_buf, // 1st half buf
|
||||
lv_pixel_buf2, // 2nd half buf
|
||||
lvgl_buffer_size);
|
||||
|
||||
// Initialize LvGL display driver
|
||||
lv_disp_drv_init(&lv_disp_drv);
|
||||
lv_disp_drv.hor_res = tft->width();
|
||||
lv_disp_drv.ver_res = tft->height();
|
||||
lv_disp_drv.flush_cb = lv_flush_callback;
|
||||
lv_disp_drv.draw_buf = &lv_disp_buf;
|
||||
lv_disp_drv.user_data = (void*)this;
|
||||
lv_disp_drv_register(&lv_disp_drv);
|
||||
|
||||
// Initialize LvGL input device (touchscreen already started)
|
||||
if (touch) { // Can also pass NULL if passive widget display
|
||||
lv_indev_drv_init(&lv_indev_drv); // Basic init
|
||||
lv_indev_drv.type = LV_INDEV_TYPE_POINTER; // Is pointer dev
|
||||
lv_indev_drv.read_cb = touchscreen_read; // Read callback
|
||||
lv_indev_drv.user_data = (void*)this;
|
||||
lv_input_dev_ptr = lv_indev_drv_register(&lv_indev_drv);
|
||||
}
|
||||
|
||||
// TIMER SETUP is architecture-specific ----------------------------
|
||||
|
||||
// ESP 32------------------------------------------------
|
||||
tick.attach_ms(lv_tick_interval_ms, lv_tick_handler);
|
||||
status = LVGL_OK;
|
||||
// -----------------------------------------
|
||||
}
|
||||
|
||||
if (status != LVGL_OK) {
|
||||
delete[] lv_pixel_buf;
|
||||
lv_pixel_buf = NULL;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
#ifndef _ADAFRUIT_LVGL_GLUE_H_
|
||||
#define _ADAFRUIT_LVGL_GLUE_H_
|
||||
|
||||
#include <lvgl.h> // LittlevGL core lib
|
||||
#include <renderer.h>
|
||||
#include <Ticker.h> // ESP32-specific timer lib
|
||||
#include <FS.h>
|
||||
|
||||
typedef enum {
|
||||
LVGL_OK,
|
||||
LVGL_ERR_ALLOC,
|
||||
LVGL_ERR_TIMER,
|
||||
} LvGLStatus;
|
||||
|
||||
/**
|
||||
* @brief Class to act as a "glue" layer between the LvGL graphics library and
|
||||
* most of Adafruit's TFT displays
|
||||
*
|
||||
*/
|
||||
|
||||
class Adafruit_LvGL_Glue {
|
||||
public:
|
||||
Adafruit_LvGL_Glue(void);
|
||||
~Adafruit_LvGL_Glue(void);
|
||||
// Different begin() funcs for STMPE610, ADC or no touch
|
||||
// LvGLStatus begin(uDisplay_lvgl *tft, Adafruit_STMPE610 *touch,
|
||||
// bool debug = false);
|
||||
// LvGLStatus begin(uDisplay_lvgl *tft, TouchScreen *touch,
|
||||
// bool debug = false);
|
||||
LvGLStatus begin(Renderer *tft, bool debug = false);
|
||||
LvGLStatus begin(Renderer *tft, void *touch, bool debug);
|
||||
// These items need to be public for some internal callbacks,
|
||||
// but should be avoided by user code please!
|
||||
Renderer *display; ///< Pointer to the SPITFT display instance
|
||||
void *touchscreen; ///< Pointer to the touchscreen object to use
|
||||
bool is_adc_touch; ///< determines if the touchscreen controlelr is ADC based
|
||||
bool first_frame; ///< Tracks if a call to `lv_flush_callback` needs to wait
|
||||
///< for DMA transfer to complete
|
||||
void setScreenshotFile(File *f) { screenshot = f; }
|
||||
File * getScreenshotFile(void) const { return screenshot; }
|
||||
void stopScreenshot(void) { screenshot = nullptr; }
|
||||
|
||||
private:
|
||||
lv_disp_drv_t lv_disp_drv;
|
||||
lv_disp_draw_buf_t lv_disp_buf;
|
||||
lv_color_t *lv_pixel_buf;
|
||||
lv_color_t *lv_pixel_buf2;
|
||||
lv_indev_drv_t lv_indev_drv;
|
||||
lv_indev_t *lv_input_dev_ptr;
|
||||
Ticker tick;
|
||||
File * screenshot = nullptr;
|
||||
};
|
||||
|
||||
#endif // _ADAFRUIT_LVGL_GLUE_H_
|
|
@ -1,50 +0,0 @@
|
|||
# Adafruit LvGL Glue [![Build Status](https://github.com/adafruit/Adafruit_LvGL_Glue/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_LvGL_Glue/actions)
|
||||
|
||||
This Arduino library provides a layer between LittlevGL (a UI library for
|
||||
embedded systems) and most of Adafruit's color TFT displays (anything that's
|
||||
a subclass of SPITFT).
|
||||
|
||||
Examples show basic use on PyPortal, FeatherWing, CLUE and TFT Gizmo.
|
||||
Use these as a starting point, see LittlevGL documentation at
|
||||
docs.littlevgl.com for a thorough explanation of capabilities and use.
|
||||
|
||||
# Dependencies
|
||||
* [LittlevGL](https://github.com/littlevgl/lvgl)
|
||||
* [Adafruit GFX Library](https://github.com/adafruit/Adafruit-GFX-Library)
|
||||
* [Adafruit HX8357 Library](https://github.com/adafruit/Adafruit_HX8357_Library)
|
||||
* [Adafruit ILI9341](https://github.com/adafruit/Adafruit_ILI9341)
|
||||
* [Adafruit ST7735 and ST7789 Library](https://github.com/adafruit/Adafruit-ST7735-Library)
|
||||
* [Adafruit STMPE610](https://github.com/adafruit/Adafruit_STMPE610)
|
||||
* [Adafruit TouchScreen](https://github.com/adafruit/Adafruit_TouchScreen)
|
||||
* [Adafruit Zero DMA Library](https://github.com/adafruit/Adafruit_ZeroDMA)
|
||||
* [Adafruit ZeroTimer Library](https://github.com/adafruit/Adafruit_ZeroTimer)
|
||||
|
||||
# Compatibility
|
||||
Version 2.0.0 is a breaking change, mostly due to significant structural
|
||||
changes in the LittlevGL library for Arduino. If you were previously using
|
||||
an earlier version of this library and/or LittlevGL, both will need updating,
|
||||
and you should skim the examples and read through the hello_changes example
|
||||
specifically.
|
||||
|
||||
Use on M0 (SAMD21) boards isn't recommended anymore, as LittlevGL has grown.
|
||||
Simple programs might still work, but it's better to move up to a device
|
||||
with more RAM -- M4 (SAMD51), nRF52 and ESP32 are currently supported.
|
||||
|
||||
# Contributing
|
||||
Contributions are welcome! Please read our [Code of Conduct](https://github.com/adafruit/Adafruit_LvGL_Glue/blob/master/CODE_OF_CONDUCT.md>)
|
||||
before contributing to help this project stay welcoming.
|
||||
|
||||
## Documentation and doxygen
|
||||
Documentation is produced by doxygen. Contributions should include documentation for any new code added.
|
||||
|
||||
Some examples of how to use doxygen can be found in these guide pages:
|
||||
|
||||
https://learn.adafruit.com/the-well-automated-arduino-library/doxygen
|
||||
|
||||
https://learn.adafruit.com/the-well-automated-arduino-library/doxygen-tips
|
||||
|
||||
Written by Phil Burgess aka Paint Your Dragon for Adafruit Industries.
|
||||
BSD license, check license.txt for more information
|
||||
All text above must be included in any redistribution
|
||||
|
||||
To install, use the Arduino Library Manager and search for "Adafruit LvGL Glue Library" and install the library.
|
|
@ -1,127 +0,0 @@
|
|||
# Adafruit Community Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and leaders pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, gender identity and expression, level or type of
|
||||
experience, education, socio-economic status, nationality, personal appearance,
|
||||
race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
We are committed to providing a friendly, safe and welcoming environment for
|
||||
all.
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Be kind and courteous to others
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Collaborating with other community members
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and sexual attention or advances
|
||||
* The use of inappropriate images, including in a community member's avatar
|
||||
* The use of inappropriate language, including in a community member's nickname
|
||||
* Any spamming, flaming, baiting or other attention-stealing behavior
|
||||
* Excessive or unwelcome helping; answering outside the scope of the question
|
||||
asked
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate
|
||||
|
||||
The goal of the standards and moderation guidelines outlined here is to build
|
||||
and maintain a respectful community. We ask that you don’t just aim to be
|
||||
"technically unimpeachable", but rather try to be your best self.
|
||||
|
||||
We value many things beyond technical expertise, including collaboration and
|
||||
supporting others within our community. Providing a positive experience for
|
||||
other community members can have a much more significant impact than simply
|
||||
providing the correct answer.
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project leaders are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project leaders have the right and responsibility to remove, edit, or
|
||||
reject messages, comments, commits, code, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any community member for other behaviors that they deem
|
||||
inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Moderation
|
||||
|
||||
Instances of behaviors that violate the Adafruit Community Code of Conduct
|
||||
may be reported by any member of the community. Community members are
|
||||
encouraged to report these situations, including situations they witness
|
||||
involving other community members.
|
||||
|
||||
You may report in the following ways:
|
||||
|
||||
In any situation, you may send an email to <support@adafruit.com>.
|
||||
|
||||
On the Adafruit Discord, you may send an open message from any channel
|
||||
to all Community Helpers by tagging @community helpers. You may also send an
|
||||
open message from any channel, or a direct message to @kattni#1507,
|
||||
@tannewt#4653, @Dan Halbert#1614, @cater#2442, @sommersoft#0222, or
|
||||
@Andon#8175.
|
||||
|
||||
Email and direct message reports will be kept confidential.
|
||||
|
||||
In situations on Discord where the issue is particularly egregious, possibly
|
||||
illegal, requires immediate action, or violates the Discord terms of service,
|
||||
you should also report the message directly to Discord.
|
||||
|
||||
These are the steps for upholding our community’s standards of conduct.
|
||||
|
||||
1. Any member of the community may report any situation that violates the
|
||||
Adafruit Community Code of Conduct. All reports will be reviewed and
|
||||
investigated.
|
||||
2. If the behavior is an egregious violation, the community member who
|
||||
committed the violation may be banned immediately, without warning.
|
||||
3. Otherwise, moderators will first respond to such behavior with a warning.
|
||||
4. Moderators follow a soft "three strikes" policy - the community member may
|
||||
be given another chance, if they are receptive to the warning and change their
|
||||
behavior.
|
||||
5. If the community member is unreceptive or unreasonable when warned by a
|
||||
moderator, or the warning goes unheeded, they may be banned for a first or
|
||||
second offense. Repeated offenses will result in the community member being
|
||||
banned.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct and the enforcement policies listed above apply to all
|
||||
Adafruit Community venues. This includes but is not limited to any community
|
||||
spaces (both public and private), the entire Adafruit Discord server, and
|
||||
Adafruit GitHub repositories. Examples of Adafruit Community spaces include
|
||||
but are not limited to meet-ups, audio chats on the Adafruit Discord, or
|
||||
interaction at a conference.
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. As a community
|
||||
member, you are representing our community, and are expected to behave
|
||||
accordingly.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 1.4, available at
|
||||
<https://www.contributor-covenant.org/version/1/4/code-of-conduct.html>,
|
||||
and the [Rust Code of Conduct](https://www.rust-lang.org/en-US/conduct.html).
|
||||
|
||||
For other projects adopting the Adafruit Community Code of
|
||||
Conduct, please contact the maintainers of those projects for enforcement.
|
||||
If you wish to use this code of conduct for your own project, consider
|
||||
explicitly mentioning your moderation policy or making a copy with your
|
||||
own moderation policy so as to avoid confusion.
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"name": "Adafruit LittlevGL Glue Library",
|
||||
"description": "This library works in conjunction with LittlevGL (an embedded system GUI library) and Adafruit display-specific libraries to provide nice user interfaces on PyPortal, TFT FeatherWings, and more.",
|
||||
"version": "2.0.0",
|
||||
"homepage": "https://github.com/adafruit/Adafruit_LvGL_Glue",
|
||||
"frameworks": "*",
|
||||
"build": {
|
||||
"flags": [ "-Wno-deprecated-enum-enum-conversion" ]
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
name=Adafruit LittlevGL Glue Library
|
||||
version=2.0.0
|
||||
author=Adafruit
|
||||
maintainer=Adafruit <info@adafruit.com>
|
||||
sentence=Simplifies use of LittlevGL library with Adafruit displays.
|
||||
paragraph=This library works in conjunction with LittlevGL (an embedded system GUI library) and Adafruit display-specific libraries to provide nice user interfaces on PyPortal, TFT FeatherWings, and more.
|
||||
category=Display
|
||||
url=https://github.com/adafruit/Adafruit_LvGL_Glue
|
||||
architectures=samd, nrf52, esp32
|
||||
depends=Adafruit GFX Library, Adafruit TouchScreen, Adafruit STMPE610, Adafruit Zero DMA Library, Adafruit HX8357 Library, Adafruit ILI9341, Adafruit ZeroTimer Library, Adafruit ST7735 and ST7789 Library, lvgl
|
|
@ -1,26 +0,0 @@
|
|||
Software License Agreement (BSD License)
|
||||
|
||||
Copyright (c) 2020 Phil Burgess aka Paint Your Dragon for Adafruit Industries
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the copyright holders nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
|
@ -2084,9 +2084,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -2100,9 +2099,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -2111,7 +2107,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_12_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_12_latin1 = {
|
||||
|
|
|
@ -2335,9 +2335,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -2351,9 +2350,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -2362,7 +2358,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_14_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_14_latin1 = {
|
||||
|
|
|
@ -2536,9 +2536,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -2552,9 +2551,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -2563,7 +2559,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_16_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_16_latin1 = {
|
||||
|
|
|
@ -3076,9 +3076,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -3092,9 +3091,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -3103,7 +3099,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_20_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_20_latin1 = {
|
||||
|
|
|
@ -3371,9 +3371,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -3387,9 +3386,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -3398,7 +3394,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_22_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_22_latin1 = {
|
||||
|
|
|
@ -3527,9 +3527,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -3543,9 +3542,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -3554,7 +3550,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_24_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_24_latin1 = {
|
||||
|
|
|
@ -3952,9 +3952,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -3968,9 +3967,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -3979,7 +3975,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_26_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_26_latin1 = {
|
||||
|
|
|
@ -4309,9 +4309,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -4325,9 +4324,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -4336,7 +4332,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_28_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_28_latin1 = {
|
||||
|
|
|
@ -4930,9 +4930,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -4946,9 +4945,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -4957,7 +4953,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_32_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_32_latin1 = {
|
||||
|
|
|
@ -5714,9 +5714,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -5730,9 +5729,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -5741,7 +5737,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_36_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_36_latin1 = {
|
||||
|
|
|
@ -6059,9 +6059,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -6075,9 +6074,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -6086,7 +6082,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_38_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_38_latin1 = {
|
||||
|
|
|
@ -6422,9 +6422,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -6438,9 +6437,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -6449,7 +6445,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_40_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_40_latin1 = {
|
||||
|
|
|
@ -7114,9 +7114,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -7130,9 +7129,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -7141,7 +7137,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_44_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_44_latin1 = {
|
||||
|
|
|
@ -7613,9 +7613,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -7629,9 +7628,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 3,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -7640,7 +7636,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t robotocondensed_regular_48_latin1 = {
|
||||
#else
|
||||
lv_font_t robotocondensed_regular_48_latin1 = {
|
||||
|
|
|
@ -119,9 +119,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -135,9 +134,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -146,7 +142,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_10 = {
|
||||
#else
|
||||
lv_font_t seg7_10 = {
|
||||
|
|
|
@ -128,9 +128,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -144,9 +143,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -155,7 +151,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_12 = {
|
||||
#else
|
||||
lv_font_t seg7_12 = {
|
||||
|
|
|
@ -134,9 +134,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -150,9 +149,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -161,7 +157,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_14 = {
|
||||
#else
|
||||
lv_font_t seg7_14 = {
|
||||
|
|
|
@ -137,9 +137,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -153,9 +152,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -164,7 +160,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_16 = {
|
||||
#else
|
||||
lv_font_t seg7_16 = {
|
||||
|
|
|
@ -143,9 +143,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -159,9 +158,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -170,7 +166,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_18 = {
|
||||
#else
|
||||
lv_font_t seg7_18 = {
|
||||
|
|
|
@ -167,9 +167,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -183,9 +182,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -194,7 +190,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_20 = {
|
||||
#else
|
||||
lv_font_t seg7_20 = {
|
||||
|
|
|
@ -183,9 +183,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -199,9 +198,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -210,7 +206,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_24 = {
|
||||
#else
|
||||
lv_font_t seg7_24 = {
|
||||
|
|
|
@ -210,9 +210,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -226,9 +225,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -237,7 +233,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_28 = {
|
||||
#else
|
||||
lv_font_t seg7_28 = {
|
||||
|
|
|
@ -257,9 +257,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -273,9 +272,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -284,7 +280,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_36 = {
|
||||
#else
|
||||
lv_font_t seg7_36 = {
|
||||
|
|
|
@ -316,9 +316,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -332,9 +331,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 2,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 1,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -343,7 +339,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_48 = {
|
||||
#else
|
||||
lv_font_t seg7_48 = {
|
||||
|
|
|
@ -119,9 +119,8 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
|
@ -135,9 +134,6 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
.bpp = 1,
|
||||
.kern_classes = 0,
|
||||
.bitmap_format = 0,
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
@ -146,7 +142,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t seg7_8 = {
|
||||
#else
|
||||
lv_font_t seg7_8 = {
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
#include "../lvgl.h" /*To see all the widgets*/
|
||||
|
||||
#include "lv_theme_haspmota.h"
|
||||
#include "misc/lv_gc.h"
|
||||
// #include "misc/lv_gc.h" TODO
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define MODE_DARK 1
|
||||
#define RADIUS_DEFAULT (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 8))
|
||||
#define RADIUS_DEFAULT (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 12) : lv_display_dpx(theme.disp, 8))
|
||||
|
||||
/*SCREEN*/
|
||||
#define LIGHT_COLOR_SCR lv_palette_lighten(LV_PALETTE_GREY, 4)
|
||||
|
@ -28,12 +28,12 @@
|
|||
#define DARK_COLOR_GREY lv_color_hex(0x2f3237)
|
||||
|
||||
#define TRANSITION_TIME LV_THEME_DEFAULT_TRANSITION_TIME
|
||||
#define BORDER_WIDTH lv_disp_dpx(theme.disp, 2)
|
||||
#define OUTLINE_WIDTH lv_disp_dpx(theme.disp, 3)
|
||||
#define BORDER_WIDTH lv_display_dpx(theme.disp, 2)
|
||||
#define OUTLINE_WIDTH lv_display_dpx(theme.disp, 3)
|
||||
|
||||
#define PAD_DEF (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 24) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 20) : lv_disp_dpx(theme.disp, 16))
|
||||
#define PAD_SMALL (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 14) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 10))
|
||||
#define PAD_TINY (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 8) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 6) : lv_disp_dpx(theme.disp, 2))
|
||||
#define PAD_DEF (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 24) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 20) : lv_display_dpx(theme.disp, 16))
|
||||
#define PAD_SMALL (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 14) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 12) : lv_display_dpx(theme.disp, 10))
|
||||
#define PAD_TINY (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 8) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 6) : lv_display_dpx(theme.disp, 2))
|
||||
|
||||
// OpenHASP specific
|
||||
/*BUTTON*/
|
||||
|
@ -261,7 +261,7 @@ static void style_init(void)
|
|||
LV_STYLE_BG_OPA, LV_STYLE_BG_COLOR,
|
||||
LV_STYLE_TRANSFORM_WIDTH, LV_STYLE_TRANSFORM_HEIGHT,
|
||||
LV_STYLE_TRANSLATE_Y, LV_STYLE_TRANSLATE_X,
|
||||
LV_STYLE_TRANSFORM_ZOOM, LV_STYLE_TRANSFORM_ANGLE,
|
||||
/*LV_STYLE_TRANSFORM_ZOOM_X, LV_STYLE_TRANSFORM_ZOOM_Y,*/ LV_STYLE_TRANSFORM_ANGLE,
|
||||
LV_STYLE_COLOR_FILTER_OPA, LV_STYLE_COLOR_FILTER_DSC,
|
||||
0
|
||||
};
|
||||
|
@ -286,9 +286,9 @@ static void style_init(void)
|
|||
style_init_reset(&styles->scrollbar);
|
||||
lv_style_set_bg_color(&styles->scrollbar, (theme.flags & MODE_DARK) ? lv_palette_darken(LV_PALETTE_GREY, 2) : lv_palette_main(LV_PALETTE_GREY));
|
||||
lv_style_set_radius(&styles->scrollbar, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_pad_right(&styles->scrollbar, lv_disp_dpx(theme.disp, 7));
|
||||
lv_style_set_pad_top(&styles->scrollbar, lv_disp_dpx(theme.disp, 7));
|
||||
lv_style_set_size(&styles->scrollbar, lv_disp_dpx(theme.disp, 5));
|
||||
lv_style_set_pad_right(&styles->scrollbar, lv_display_dpx(theme.disp, 7));
|
||||
lv_style_set_pad_top(&styles->scrollbar, lv_display_dpx(theme.disp, 7));
|
||||
lv_style_set_size(&styles->scrollbar, lv_display_dpx(theme.disp, 5), lv_display_dpx(theme.disp, 5));
|
||||
lv_style_set_bg_opa(&styles->scrollbar, LV_OPA_40);
|
||||
lv_style_set_transition(&styles->scrollbar, &trans_normal);
|
||||
|
||||
|
@ -316,7 +316,7 @@ static void style_init(void)
|
|||
lv_style_set_pad_row(&styles->card, PAD_SMALL);
|
||||
lv_style_set_pad_column(&styles->card, PAD_SMALL);
|
||||
lv_style_set_line_color(&styles->card, lv_palette_main(LV_PALETTE_GREY));
|
||||
lv_style_set_line_width(&styles->card, lv_disp_dpx(theme.disp, 1));
|
||||
lv_style_set_line_width(&styles->card, lv_display_dpx(theme.disp, 1));
|
||||
|
||||
style_init_reset(&styles->outline_primary);
|
||||
lv_style_set_outline_color(&styles->outline_primary, theme.color_primary);
|
||||
|
@ -330,19 +330,19 @@ static void style_init(void)
|
|||
lv_style_set_outline_opa(&styles->outline_secondary, LV_OPA_50);
|
||||
|
||||
style_init_reset(&styles->btn);
|
||||
lv_style_set_radius(&styles->btn, (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 16) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 8)));
|
||||
lv_style_set_radius(&styles->btn, (disp_size == DISP_LARGE ? lv_display_dpx(theme.disp, 16) : disp_size == DISP_MEDIUM ? lv_display_dpx(theme.disp, 12) : lv_display_dpx(theme.disp, 8)));
|
||||
lv_style_set_bg_opa(&styles->btn, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&styles->btn, color_grey);
|
||||
// if(!(theme.flags & MODE_DARK)) { // OpenHASP
|
||||
// lv_style_set_shadow_color(&styles->btn, lv_palette_lighten(LV_PALETTE_GREY, 3));
|
||||
// lv_style_set_shadow_width(&styles->btn, 1);
|
||||
// lv_style_set_shadow_ofs_y(&styles->btn, lv_disp_dpx(theme.disp, 4));
|
||||
// lv_style_set_shadow_ofs_y(&styles->btn, lv_display_dpx(theme.disp, 4));
|
||||
// }
|
||||
lv_style_set_text_color(&styles->btn, color_text);
|
||||
lv_style_set_pad_hor(&styles->btn, PAD_DEF);
|
||||
lv_style_set_pad_ver(&styles->btn, PAD_SMALL);
|
||||
lv_style_set_pad_column(&styles->btn, lv_disp_dpx(theme.disp, 5));
|
||||
lv_style_set_pad_row(&styles->btn, lv_disp_dpx(theme.disp, 5));
|
||||
lv_style_set_pad_column(&styles->btn, lv_display_dpx(theme.disp, 5));
|
||||
lv_style_set_pad_row(&styles->btn, lv_display_dpx(theme.disp, 5));
|
||||
lv_style_set_text_font(&styles->btn, theme.font_normal);
|
||||
|
||||
static lv_color_filter_dsc_t dark_filter;
|
||||
|
@ -372,11 +372,11 @@ static void style_init(void)
|
|||
lv_style_set_pad_gap(&styles->pad_small, PAD_SMALL);
|
||||
|
||||
style_init_reset(&styles->pad_gap);
|
||||
lv_style_set_pad_row(&styles->pad_gap, lv_disp_dpx(theme.disp, 10));
|
||||
lv_style_set_pad_column(&styles->pad_gap, lv_disp_dpx(theme.disp, 10));
|
||||
lv_style_set_pad_row(&styles->pad_gap, lv_display_dpx(theme.disp, 10));
|
||||
lv_style_set_pad_column(&styles->pad_gap, lv_display_dpx(theme.disp, 10));
|
||||
|
||||
style_init_reset(&styles->line_space_large);
|
||||
lv_style_set_text_line_space(&styles->line_space_large, lv_disp_dpx(theme.disp, 20));
|
||||
lv_style_set_text_line_space(&styles->line_space_large, lv_display_dpx(theme.disp, 20));
|
||||
|
||||
style_init_reset(&styles->text_align_center);
|
||||
lv_style_set_text_align(&styles->text_align_center, LV_TEXT_ALIGN_CENTER);
|
||||
|
@ -429,14 +429,14 @@ static void style_init(void)
|
|||
|
||||
#if LV_THEME_DEFAULT_GROW
|
||||
style_init_reset(&styles->grow);
|
||||
lv_style_set_transform_width(&styles->grow, lv_disp_dpx(theme.disp, 3));
|
||||
lv_style_set_transform_height(&styles->grow, lv_disp_dpx(theme.disp, 3));
|
||||
lv_style_set_transform_width(&styles->grow, lv_display_dpx(theme.disp, 3));
|
||||
lv_style_set_transform_height(&styles->grow, lv_display_dpx(theme.disp, 3));
|
||||
#endif
|
||||
|
||||
style_init_reset(&styles->knob);
|
||||
lv_style_set_bg_color(&styles->knob, theme.color_primary);
|
||||
lv_style_set_bg_opa(&styles->knob, LV_OPA_COVER);
|
||||
lv_style_set_pad_all(&styles->knob, lv_disp_dpx(theme.disp, 6));
|
||||
lv_style_set_pad_all(&styles->knob, lv_display_dpx(theme.disp, 6));
|
||||
lv_style_set_radius(&styles->knob, LV_RADIUS_CIRCLE);
|
||||
|
||||
style_init_reset(&styles->anim);
|
||||
|
@ -445,7 +445,7 @@ static void style_init(void)
|
|||
#if LV_USE_ARC
|
||||
style_init_reset(&styles->arc_indic);
|
||||
lv_style_set_arc_color(&styles->arc_indic, color_grey);
|
||||
lv_style_set_arc_width(&styles->arc_indic, lv_disp_dpx(theme.disp, 18)); // OpenHASP
|
||||
lv_style_set_arc_width(&styles->arc_indic, lv_display_dpx(theme.disp, 18)); // OpenHASP
|
||||
lv_style_set_arc_rounded(&styles->arc_indic, true);
|
||||
|
||||
style_init_reset(&styles->arc_indic_primary);
|
||||
|
@ -455,7 +455,7 @@ static void style_init(void)
|
|||
style_init_reset(&styles->arc_knob);
|
||||
lv_style_set_bg_color(&styles->arc_knob, theme.color_primary);
|
||||
lv_style_set_bg_opa(&styles->arc_knob, LV_OPA_COVER);
|
||||
lv_style_set_pad_all(&styles->arc_knob, lv_disp_dpx(theme.disp, 4));
|
||||
lv_style_set_pad_all(&styles->arc_knob, lv_display_dpx(theme.disp, 4));
|
||||
lv_style_set_radius(&styles->arc_knob, LV_RADIUS_CIRCLE);
|
||||
#endif
|
||||
|
||||
|
@ -465,7 +465,7 @@ static void style_init(void)
|
|||
#endif
|
||||
#if LV_USE_CHECKBOX
|
||||
style_init_reset(&styles->cb_marker);
|
||||
lv_style_set_pad_all(&styles->cb_marker, lv_disp_dpx(theme.disp, 3));
|
||||
lv_style_set_pad_all(&styles->cb_marker, lv_display_dpx(theme.disp, 3));
|
||||
lv_style_set_border_width(&styles->cb_marker, BORDER_WIDTH);
|
||||
lv_style_set_border_color(&styles->cb_marker, theme.color_primary);
|
||||
lv_style_set_bg_color(&styles->cb_marker, color_card);
|
||||
|
@ -473,14 +473,14 @@ static void style_init(void)
|
|||
lv_style_set_radius(&styles->cb_marker, RADIUS_DEFAULT / 2);
|
||||
|
||||
style_init_reset(&styles->cb_marker_checked);
|
||||
lv_style_set_bg_img_src(&styles->cb_marker_checked, LV_SYMBOL_OK);
|
||||
lv_style_set_bg_image_src(&styles->cb_marker_checked, LV_SYMBOL_OK);
|
||||
lv_style_set_text_color(&styles->cb_marker_checked, lv_color_white());
|
||||
lv_style_set_text_font(&styles->cb_marker_checked, theme.font_small);
|
||||
#endif
|
||||
|
||||
#if LV_USE_SWITCH
|
||||
style_init_reset(&styles->switch_knob);
|
||||
lv_style_set_pad_all(&styles->switch_knob, - lv_disp_dpx(theme.disp, 4));
|
||||
lv_style_set_pad_all(&styles->switch_knob, - lv_display_dpx(theme.disp, 4));
|
||||
lv_style_set_bg_color(&styles->switch_knob, lv_color_white());
|
||||
#endif
|
||||
|
||||
|
@ -493,45 +493,45 @@ static void style_init(void)
|
|||
#if LV_USE_CHART
|
||||
style_init_reset(&styles->chart_bg);
|
||||
lv_style_set_border_post(&styles->chart_bg, false);
|
||||
lv_style_set_pad_column(&styles->chart_bg, lv_disp_dpx(theme.disp, 10));
|
||||
lv_style_set_pad_column(&styles->chart_bg, lv_display_dpx(theme.disp, 10));
|
||||
lv_style_set_line_color(&styles->chart_bg, color_grey);
|
||||
|
||||
style_init_reset(&styles->chart_series);
|
||||
lv_style_set_line_width(&styles->chart_series, lv_disp_dpx(theme.disp, 3));
|
||||
lv_style_set_radius(&styles->chart_series, lv_disp_dpx(theme.disp, 3));
|
||||
lv_style_set_size(&styles->chart_series, lv_disp_dpx(theme.disp, 8));
|
||||
lv_style_set_pad_column(&styles->chart_series, lv_disp_dpx(theme.disp, 2));
|
||||
lv_style_set_line_width(&styles->chart_series, lv_display_dpx(theme.disp, 3));
|
||||
lv_style_set_radius(&styles->chart_series, lv_display_dpx(theme.disp, 3));
|
||||
lv_style_set_size(&styles->chart_series, lv_display_dpx(theme.disp, 8), lv_display_dpx(theme.disp, 8));
|
||||
lv_style_set_pad_column(&styles->chart_series, lv_display_dpx(theme.disp, 2));
|
||||
|
||||
style_init_reset(&styles->chart_indic);
|
||||
lv_style_set_radius(&styles->chart_indic,LV_RADIUS_CIRCLE);
|
||||
lv_style_set_size(&styles->chart_indic, lv_disp_dpx(theme.disp, 8));
|
||||
lv_style_set_size(&styles->chart_indic, lv_display_dpx(theme.disp, 8), lv_display_dpx(theme.disp, 8));
|
||||
lv_style_set_bg_color(&styles->chart_indic, theme.color_primary);
|
||||
lv_style_set_bg_opa(&styles->chart_indic, LV_OPA_COVER);
|
||||
|
||||
style_init_reset(&styles->chart_ticks);
|
||||
lv_style_set_line_width(&styles->chart_ticks, lv_disp_dpx(theme.disp, 1));
|
||||
lv_style_set_line_width(&styles->chart_ticks, lv_display_dpx(theme.disp, 1));
|
||||
lv_style_set_line_color(&styles->chart_ticks, color_text);
|
||||
lv_style_set_pad_all(&styles->chart_ticks, lv_disp_dpx(theme.disp, 2));
|
||||
lv_style_set_pad_all(&styles->chart_ticks, lv_display_dpx(theme.disp, 2));
|
||||
lv_style_set_text_color(&styles->chart_ticks, lv_palette_main(LV_PALETTE_GREY));
|
||||
#endif
|
||||
|
||||
#if LV_USE_METER
|
||||
style_init_reset(&styles->meter_marker);
|
||||
lv_style_set_line_width(&styles->meter_marker, lv_disp_dpx(theme.disp, 5));
|
||||
lv_style_set_line_width(&styles->meter_marker, lv_display_dpx(theme.disp, 5));
|
||||
lv_style_set_line_color(&styles->meter_marker, color_text);
|
||||
lv_style_set_size(&styles->meter_marker, lv_disp_dpx(theme.disp, 20));
|
||||
lv_style_set_pad_left(&styles->meter_marker, lv_disp_dpx(theme.disp, 15));
|
||||
lv_style_set_size(&styles->meter_marker, lv_display_dpx(theme.disp, 20));
|
||||
lv_style_set_pad_left(&styles->meter_marker, lv_display_dpx(theme.disp, 15));
|
||||
|
||||
style_init_reset(&styles->meter_indic);
|
||||
lv_style_set_radius(&styles->meter_indic, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_bg_color(&styles->meter_indic, color_text);
|
||||
lv_style_set_bg_opa(&styles->meter_indic, LV_OPA_COVER);
|
||||
lv_style_set_size(&styles->meter_indic, lv_disp_dpx(theme.disp, 15));
|
||||
lv_style_set_size(&styles->meter_indic, lv_display_dpx(theme.disp, 15));
|
||||
#endif
|
||||
|
||||
#if LV_USE_TABLE
|
||||
style_init_reset(&styles->table_cell);
|
||||
lv_style_set_border_width(&styles->table_cell, lv_disp_dpx(theme.disp, 1));
|
||||
lv_style_set_border_width(&styles->table_cell, lv_display_dpx(theme.disp, 1));
|
||||
lv_style_set_border_color(&styles->table_cell, color_grey);
|
||||
lv_style_set_border_side(&styles->table_cell, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM );
|
||||
#endif
|
||||
|
@ -539,8 +539,8 @@ static void style_init(void)
|
|||
#if LV_USE_TEXTAREA
|
||||
style_init_reset(&styles->ta_cursor);
|
||||
lv_style_set_border_color(&styles->ta_cursor, color_text);
|
||||
lv_style_set_border_width(&styles->ta_cursor, lv_disp_dpx(theme.disp, 2));
|
||||
lv_style_set_pad_left(&styles->ta_cursor, lv_disp_dpx(theme.disp, 1));
|
||||
lv_style_set_border_width(&styles->ta_cursor, lv_display_dpx(theme.disp, 2));
|
||||
lv_style_set_pad_left(&styles->ta_cursor, lv_display_dpx(theme.disp, 1));
|
||||
lv_style_set_border_side(&styles->ta_cursor, LV_BORDER_SIDE_LEFT);
|
||||
lv_style_set_anim_time(&styles->ta_cursor, 400);
|
||||
|
||||
|
@ -555,7 +555,7 @@ static void style_init(void)
|
|||
lv_style_set_radius(&styles->calendar_bg, 0);
|
||||
|
||||
style_init_reset(&styles->calendar_day);
|
||||
lv_style_set_border_width(&styles->calendar_day, lv_disp_dpx(theme.disp, 1));
|
||||
lv_style_set_border_width(&styles->calendar_day, lv_display_dpx(theme.disp, 1));
|
||||
lv_style_set_border_color(&styles->calendar_day, color_grey);
|
||||
lv_style_set_bg_color(&styles->calendar_day, color_card);
|
||||
lv_style_set_bg_opa(&styles->calendar_day, LV_OPA_20);
|
||||
|
@ -563,13 +563,13 @@ static void style_init(void)
|
|||
|
||||
#if LV_USE_COLORWHEEL
|
||||
style_init_reset(&styles->colorwheel_main);
|
||||
lv_style_set_arc_width(&styles->colorwheel_main, lv_disp_dpx(theme.disp, 10));
|
||||
lv_style_set_arc_width(&styles->colorwheel_main, lv_display_dpx(theme.disp, 10));
|
||||
#endif
|
||||
|
||||
#if LV_USE_MSGBOX
|
||||
/*To add space for for the button shadow*/
|
||||
style_init_reset(&styles->msgbox_btn_bg);
|
||||
lv_style_set_pad_all(&styles->msgbox_btn_bg, lv_disp_dpx(theme.disp, 4));
|
||||
lv_style_set_pad_all(&styles->msgbox_btn_bg, lv_display_dpx(theme.disp, 4));
|
||||
|
||||
style_init_reset(&styles->msgbox_bg);
|
||||
lv_style_set_max_width(&styles->msgbox_bg, lv_pct(100));
|
||||
|
@ -598,7 +598,7 @@ static void style_init(void)
|
|||
lv_style_set_clip_corner(&styles->list_bg, true);
|
||||
|
||||
style_init_reset(&styles->list_btn);
|
||||
lv_style_set_border_width(&styles->list_btn, lv_disp_dpx(theme.disp, 1));
|
||||
lv_style_set_border_width(&styles->list_btn, lv_display_dpx(theme.disp, 1));
|
||||
lv_style_set_border_color(&styles->list_btn, color_grey);
|
||||
lv_style_set_border_side(&styles->list_btn, LV_BORDER_SIDE_BOTTOM);
|
||||
lv_style_set_pad_all(&styles->list_btn, PAD_SMALL);
|
||||
|
@ -615,9 +615,9 @@ static void style_init(void)
|
|||
lv_style_set_bg_color(&styles->led, lv_color_white());
|
||||
lv_style_set_bg_grad_color(&styles->led, lv_palette_main(LV_PALETTE_GREY));
|
||||
lv_style_set_radius(&styles->led, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_shadow_width(&styles->led, lv_disp_dpx(theme.disp, 15));
|
||||
lv_style_set_shadow_width(&styles->led, lv_display_dpx(theme.disp, 15));
|
||||
lv_style_set_shadow_color(&styles->led, lv_color_white());
|
||||
lv_style_set_shadow_spread(&styles->led, lv_disp_dpx(theme.disp, 5));
|
||||
lv_style_set_shadow_spread(&styles->led, lv_display_dpx(theme.disp, 5));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -625,15 +625,15 @@ static void style_init(void)
|
|||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
lv_theme_t * lv_theme_haspmota_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font)
|
||||
lv_theme_t * lv_theme_haspmota_init(lv_display_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font)
|
||||
{
|
||||
|
||||
/*This trick is required only to avoid the garbage collection of
|
||||
*styles' data if LVGL is used in a binding (e.g. Micropython)
|
||||
*In a general case styles could be in simple `static lv_style_t my_style...` variables*/
|
||||
if(!inited) {
|
||||
LV_GC_ROOT(_lv_theme_default_styles) = lv_mem_alloc(sizeof(my_theme_styles_t));
|
||||
styles = (my_theme_styles_t *)LV_GC_ROOT(_lv_theme_default_styles);
|
||||
// LV_GC_ROOT(_lv_theme_default_styles) = lv_mem_alloc(sizeof(my_theme_styles_t));
|
||||
styles = (my_theme_styles_t *)malloc(sizeof(my_theme_styles_t)); // TODO LVGL
|
||||
}
|
||||
|
||||
if(LV_HOR_RES <= 320) disp_size = DISP_SMALL;
|
||||
|
@ -693,13 +693,13 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||
|
||||
#if LV_USE_WIN
|
||||
/*Header*/
|
||||
if(lv_obj_get_child_id(obj) == 0 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
|
||||
if(lv_obj_get_index(obj) == 0 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
|
||||
lv_obj_add_style(obj, &styles->bg_color_grey, 0);
|
||||
lv_obj_add_style(obj, &styles->pad_tiny, 0);
|
||||
return;
|
||||
}
|
||||
/*Content*/
|
||||
else if(lv_obj_get_child_id(obj) == 1 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
|
||||
else if(lv_obj_get_index(obj) == 1 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
|
||||
lv_obj_add_style(obj, &styles->scr, 0);
|
||||
lv_obj_add_style(obj, &styles->pad_normal, 0);
|
||||
lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
|
||||
|
@ -711,8 +711,8 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||
lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
|
||||
lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED);
|
||||
}
|
||||
#if LV_USE_BTN
|
||||
else if(lv_obj_check_type(obj, &lv_btn_class)) {
|
||||
#if LV_USE_BUTTON
|
||||
else if(lv_obj_check_type(obj, &lv_button_class)) {
|
||||
lv_obj_add_style(obj, &styles->btn, 0);
|
||||
lv_obj_add_style(obj, &styles->bg_color_primary, 0);
|
||||
lv_obj_add_style(obj, &styles->transition_delayed, 0);
|
||||
|
@ -733,8 +733,8 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if LV_USE_BTNMATRIX
|
||||
else if(lv_obj_check_type(obj, &lv_btnmatrix_class)) {
|
||||
#if LV_USE_BUTTONMATRIX
|
||||
else if(lv_obj_check_type(obj, &lv_buttonmatrix_class)) {
|
||||
#if LV_USE_MSGBOX
|
||||
if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_msgbox_class)) {
|
||||
lv_obj_add_style(obj, &styles->msgbox_btn_bg, 0);
|
||||
|
@ -862,7 +862,7 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||
lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED);
|
||||
lv_obj_add_style(obj, &styles->chart_series, LV_PART_ITEMS);
|
||||
lv_obj_add_style(obj, &styles->chart_indic, LV_PART_INDICATOR);
|
||||
lv_obj_add_style(obj, &styles->chart_ticks, LV_PART_TICKS);
|
||||
lv_obj_add_style(obj, &styles->chart_ticks, LV_PART_ITEMS);
|
||||
lv_obj_add_style(obj, &styles->chart_series, LV_PART_CURSOR);
|
||||
}
|
||||
#endif
|
||||
|
@ -996,7 +996,7 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||
lv_obj_add_style(obj, &styles->bg_color_grey, 0);
|
||||
lv_obj_add_style(obj, &styles->list_item_grow, 0);
|
||||
}
|
||||
else if(lv_obj_check_type(obj, &lv_list_btn_class)) {
|
||||
else if(lv_obj_check_type(obj, &lv_list_button_class)) {
|
||||
lv_obj_add_style(obj, &styles->bg_color_white, 0);
|
||||
lv_obj_add_style(obj, &styles->list_btn, 0);
|
||||
lv_obj_add_style(obj, &styles->bg_color_primary, LV_STATE_FOCUS_KEY);
|
||||
|
|
|
@ -40,7 +40,7 @@ typedef enum {
|
|||
* @param font pointer to a font to use.
|
||||
* @return a pointer to reference this theme later
|
||||
*/
|
||||
lv_theme_t * lv_theme_haspmota_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font);
|
||||
lv_theme_t * lv_theme_haspmota_init(lv_display_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, const lv_font_t * font);
|
||||
|
||||
bool lv_theme_haspmota_is_inited(void);
|
||||
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
// Command:
|
||||
// python3 LVGLImage.py --ofmt C --cf RGB565A8 TASMOTA_Symbol_64.png
|
||||
|
||||
#include "lvgl.h"
|
||||
|
||||
|
||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
||||
#endif
|
||||
|
||||
#ifndef LV_ATTRIBUTE_IMG_DUST
|
||||
#define LV_ATTRIBUTE_IMG_DUST
|
||||
#endif
|
||||
|
||||
static const
|
||||
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_DUST
|
||||
uint8_t TASMOTA_Symbol_64_map[] = {
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x8c,0x8e,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xff,0x81,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfc,0xfc,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xfb,0xfb,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xfb,0xff,0xff,0xfb,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xfa,0xff,0xb9,0xb8,0xff,0xfa,0xff,0xfd,0xfd,0xff,0x81,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc4,0x02,0x01,0xc1,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x04,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x00,0x00,0x02,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x02,0x00,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x00,0x02,0x04,0x00,0x00,0x00,0x09,0x29,0x49,0x5e,0x69,0x69,0x5e,0x49,0x29,0x09,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x02,0x04,0x00,0x00,0x0d,0x55,0xa2,0xda,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xd9,0xa5,0x59,0x0c,0x00,0x00,0x05,0x02,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x05,0x00,0x03,0x00,0x00,0x13,0x81,0xe3,0xff,0xff,0xff,0xff,0xfe,0xfc,0xfb,0xfb,0xfc,0xfe,0xff,0xff,0xff,0xff,0xe2,0x83,0x14,0x00,0x00,0x04,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x04,0x00,0x00,0x66,0xe9,0xff,0xff,0xfc,0xfb,0xfb,0xfc,0xfd,0xfe,0xff,0xff,0xfe,0xfd,0xfc,0xfc,0xfb,0xfc,0xff,0xff,0xea,0x69,0x00,0x00,0x05,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x00,0x00,0x00,
|
||||
0x00,0x00,0x02,0x02,0x00,0x80,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x06,0x00,0x12,0xb5,0xff,0xff,0xf9,0xfd,0xfe,0xfb,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfb,0xfe,0xfd,0xf9,0xff,0xff,0xb8,0x14,0x00,0x06,0x00,0x04,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x02,0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x05,0x00,0x29,0xe1,0xff,0xfa,0xfb,0xff,0xfb,0xfd,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xfa,0xff,0xfb,0xfa,0xff,0xe2,0x2a,0x00,0x05,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x82,0x00,0x02,0x02,0x00,
|
||||
0x01,0x01,0x00,0x7f,0xff,0xfd,0xfd,0xff,0xf9,0xff,0xc3,0x05,0x00,0x05,0x00,0x05,0x00,0x2e,0xf0,0xff,0xf9,0xff,0xfe,0xfb,0xff,0xff,0xcb,0x7c,0x25,0xa0,0xff,0xfc,0xfc,0xff,0xa1,0x25,0x7c,0xcb,0xff,0xff,0xfb,0xfe,0xff,0xf8,0xff,0xf0,0x2e,0x00,0x05,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfd,0xff,0x82,0x00,0x01,0x02,0x01,0x00,0x80,0xff,0xfd,0xfe,0xff,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x04,0x00,0x1d,0xea,0xff,0xf9,0xff,0xfc,0xff,0xff,0xca,0x4b,0x00,0x00,0x00,0x92,0xff,0xfb,0xfb,0xff,0x94,0x00,0x00,0x00,0x49,0xca,0xff,0xff,0xfc,0xff,0xf9,0xff,0xea,0x1d,0x00,0x04,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfe,0xfd,0xff,0x83,0x00,0x01,
|
||||
0x00,0x7f,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x01,0x00,0x01,0xc8,0xff,0xf8,0xff,0xfb,0xff,0xff,0x7c,0x00,0x00,0x00,0x09,0x00,0x97,0xff,0xfb,0xfb,0xff,0x98,0x00,0x09,0x00,0x00,0x00,0x7b,0xff,0xff,0xfb,0xff,0xf8,0xff,0xc8,0x01,0x00,0x01,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x81,0x00,0x8b,0xff,0xfc,0xfd,0xff,0xf9,0xff,0xc3,0x06,0x00,0x05,0x00,0x00,0x04,0x00,0x85,0xff,0xf8,0xff,0xfc,0xff,0xfb,0x4d,0x00,0x00,0x05,0x02,0x04,0x00,0x95,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x02,0x05,0x00,0x00,0x4c,0xfa,0xff,0xfc,0xff,0xf8,0xff,0x84,0x00,0x04,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xff,0xfd,0xfc,0xff,0x8e,
|
||||
0x8a,0xff,0xfc,0xfd,0xf9,0xff,0xc2,0x05,0x00,0x05,0x00,0x00,0x04,0x00,0x2e,0xfe,0xff,0xfe,0xfd,0xff,0xff,0x46,0x00,0x06,0x01,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x01,0x06,0x00,0x45,0xff,0xff,0xfd,0xfe,0xff,0xfe,0x2e,0x00,0x04,0x00,0x00,0x05,0x00,0x04,0xc0,0xff,0xf9,0xfd,0xfc,0xff,0x8c,0x00,0x7f,0xff,0xf9,0xff,0xc2,0x06,0x00,0x04,0x00,0x00,0x01,0x02,0x00,0xac,0xff,0xfa,0xff,0xfc,0xff,0x66,0x00,0x07,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x07,0x00,0x66,0xff,0xfc,0xff,0xfa,0xff,0xab,0x00,0x02,0x01,0x00,0x00,0x04,0x00,0x05,0xc0,0xff,0xf9,0xff,0x81,0x00,
|
||||
0x01,0x00,0x7d,0xff,0xc1,0x05,0x00,0x05,0x00,0x00,0x00,0x04,0x00,0x2e,0xfd,0xff,0xfd,0xfa,0xff,0xad,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0xad,0xff,0xfa,0xfd,0xff,0xfc,0x2e,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x04,0xbf,0xff,0x7f,0x00,0x01,0x02,0x00,0x00,0x61,0x15,0x00,0x05,0x00,0x00,0x00,0x00,0x04,0x00,0x8a,0xff,0xfa,0xfe,0xff,0xf8,0x26,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x27,0xf8,0xff,0xfe,0xfa,0xff,0x89,0x00,0x04,0x00,0x00,0x00,0x00,0x05,0x00,0x14,0x61,0x00,0x00,0x02,
|
||||
0x00,0x01,0x02,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x01,0x00,0x05,0xd4,0xff,0xfb,0xfb,0xff,0x9d,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x9e,0xff,0xfb,0xfb,0xff,0xd3,0x05,0x00,0x01,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x01,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x30,0xff,0xff,0xfe,0xfe,0xff,0x3e,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x3f,0xff,0xfe,0xfd,0xff,0xff,0x2f,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x01,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x62,0xff,0xfc,0xfc,0xff,0xdb,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x09,0xdc,0xff,0xfc,0xfb,0xff,0x62,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x8c,0xff,0xfa,0xfa,0xff,0xaa,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xaa,0xff,0xfa,0xfa,0xff,0x8c,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xa9,0xff,0xfa,0xfb,0xff,0x83,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x83,0xff,0xfb,0xfa,0xff,0xa8,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xb8,0xff,0xfb,0xfb,0xff,0x6c,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x6d,0xff,0xfb,0xfb,0xff,0xb6,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xbc,0xff,0xfb,0xfb,0xff,0x66,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x67,0xff,0xfb,0xfb,0xff,0xbb,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xb4,0xff,0xfa,0xfb,0xff,0x71,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x72,0xff,0xfb,0xfa,0xff,0xb3,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0xa1,0xff,0xfa,0xfa,0xff,0x8f,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x90,0xff,0xfa,0xfa,0xff,0xa0,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x81,0xff,0xfa,0xfa,0xff,0xba,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xbb,0xff,0xfa,0xfa,0xff,0x80,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x51,0xff,0xfc,0xfd,0xff,0xec,0x16,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x16,0xed,0xff,0xfd,0xfc,0xff,0x50,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x20,0xf4,0xff,0xfd,0xfc,0xff,0x5b,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x5c,0xff,0xfc,0xfd,0xff,0xf3,0x1f,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0xbe,0xff,0xfa,0xfc,0xff,0xc1,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0xc2,0xff,0xfc,0xfa,0xff,0xbd,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x6a,0xff,0xfb,0xfe,0xfd,0xff,0x4e,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x4f,0xff,0xfd,0xfe,0xfb,0xff,0x69,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x13,0xe8,0xff,0xfc,0xfb,0xff,0xdb,0x09,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x09,0xdb,0xff,0xfb,0xfc,0xff,0xe7,0x13,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x7f,0xff,0xfa,0xff,0xfa,0xff,0xa5,0x00,0x01,0x03,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x03,0x01,0x00,0xa6,0xff,0xfa,0xff,0xfa,0xff,0x7f,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0c,0xe0,0xff,0xfc,0xff,0xfb,0xff,0x8c,0x00,0x00,0x05,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x05,0x00,0x00,0x8c,0xff,0xfb,0xff,0xfc,0xff,0xdf,0x0b,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x4c,0xff,0xfd,0xfd,0xfe,0xfc,0xff,0x9c,0x00,0x00,0x02,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x02,0x00,0x00,0x9a,0xff,0xfc,0xfe,0xfd,0xfd,0xff,0x4c,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x8b,0xff,0xf8,0xff,0xfe,0xfc,0xff,0xcb,0x33,0x00,0x02,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x02,0x00,0x33,0xca,0xff,0xfc,0xfe,0xff,0xf8,0xff,0x8a,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0xae,0xff,0xf9,0xff,0xff,0xf9,0xff,0xe5,0x0b,0x00,0x06,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x0b,0xe5,0xff,0xf9,0xff,0xff,0xf8,0xff,0xae,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0xb1,0xff,0xfb,0xfc,0xfd,0xff,0xe3,0x11,0x00,0x07,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x07,0x00,0x11,0xe3,0xff,0xfd,0xfc,0xfb,0xff,0xb3,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x99,0xff,0xff,0xf7,0xff,0xe3,0x0f,0x00,0x07,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x0f,0xe3,0xff,0xf7,0xff,0xff,0x9b,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x64,0xf2,0xff,0xff,0xde,0x0f,0x00,0x06,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x10,0xde,0xff,0xff,0xf2,0x65,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x1f,0x9f,0xff,0xf4,0x10,0x00,0x07,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x07,0x00,0x10,0xf4,0xff,0x9e,0x1f,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x33,0x80,0x10,0x00,0x06,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x06,0x00,0x0f,0x84,0x36,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x96,0xff,0xfb,0xfb,0xff,0x97,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
|
||||
};
|
||||
|
||||
const lv_img_dsc_t TASMOTA_Symbol_64 = {
|
||||
.header.magic = LV_IMAGE_HEADER_MAGIC,
|
||||
.header.cf = LV_COLOR_FORMAT_RGB565A8,
|
||||
.header.flags = 0,
|
||||
.header.w = 64,
|
||||
.header.h = 64,
|
||||
.header.stride = 128,
|
||||
.data_size = 12288,
|
||||
.data = TASMOTA_Symbol_64_map,
|
||||
};
|
|
@ -1,585 +0,0 @@
|
|||
# CMakeLists.txt
|
||||
#
|
||||
# Copyright (C) 2013-2021 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# Written originally by John Cary <cary@txcorp.com>
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
# and distributed under the terms of the FreeType project license,
|
||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
|
||||
# indicate that you have read the license and understand and accept it
|
||||
# fully.
|
||||
#
|
||||
#
|
||||
# The following will 1. create a build directory and 2. change into it and
|
||||
# call cmake to configure the build with default parameters as a static
|
||||
# library. See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html
|
||||
# for information about Debug, Release, etc. builds.
|
||||
#
|
||||
# cmake -B build -D CMAKE_BUILD_TYPE=Release
|
||||
#
|
||||
# For a dynamic library, use
|
||||
#
|
||||
# cmake -B build -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release
|
||||
#
|
||||
# For a framework on OS X, use
|
||||
#
|
||||
# cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true ..
|
||||
#
|
||||
# For an iOS static library, use
|
||||
#
|
||||
# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS ..
|
||||
#
|
||||
# or
|
||||
#
|
||||
# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR ..
|
||||
#
|
||||
# or
|
||||
#
|
||||
# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 ..
|
||||
#
|
||||
# Finally, build the project with:
|
||||
#
|
||||
# cmake --build build
|
||||
#
|
||||
# Install it with
|
||||
#
|
||||
# (sudo) cmake --build build --target install
|
||||
#
|
||||
# A binary distribution can be made with
|
||||
#
|
||||
# cmake --build build --config Release --target package
|
||||
#
|
||||
# Please refer to the cmake manual for further options, in particular, how
|
||||
# to modify compilation and linking parameters.
|
||||
#
|
||||
# Some notes.
|
||||
#
|
||||
# . `cmake' creates configuration files in
|
||||
#
|
||||
# <build-directory>/include/freetype/config
|
||||
#
|
||||
# which should be further modified if necessary.
|
||||
#
|
||||
# . You can use `cmake' directly on a freshly cloned FreeType git
|
||||
# repository.
|
||||
#
|
||||
# . `CMakeLists.txt' is provided as-is since it is normally not used by the
|
||||
# developer team.
|
||||
#
|
||||
# . Set the `FT_WITH_ZLIB', `FT_WITH_BZIP2', `FT_WITH_PNG',
|
||||
# `FT_WITH_HARFBUZZ', and `FT_WITH_BROTLI' CMake variables to `ON' to
|
||||
# force using a dependency. Leave a variable undefined (which is the
|
||||
# default) to use the dependency only if it is available. Example:
|
||||
#
|
||||
# cmake -B build -D FT_WITH_ZLIB=ON \
|
||||
# -D FT_WITH_BZIP2=ON \
|
||||
# -D FT_WITH_PNG=ON \
|
||||
# -D FT_WITH_HARFBUZZ=ON \
|
||||
# -D FT_WITH_BROTLI=ON [...]
|
||||
#
|
||||
# Set `CMAKE_DISABLE_FIND_PACKAGE_XXX=TRUE' to disable a dependency completely
|
||||
# (where `XXX' is a CMake package name like `BZip2'). Example for disabling all
|
||||
# dependencies:
|
||||
#
|
||||
# cmake -B build -D CMAKE_DISABLE_FIND_PACKAGE_ZLIB=TRUE \
|
||||
# -D CMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE \
|
||||
# -D CMAKE_DISABLE_FIND_PACKAGE_PNG=TRUE \
|
||||
# -D CMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE \
|
||||
# -D CMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE [...]
|
||||
#
|
||||
# . Installation of FreeType can be controlled with the CMake variables
|
||||
# `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL'
|
||||
# (this is compatible with the same CMake variables in zlib's CMake
|
||||
# support).
|
||||
|
||||
# FreeType explicitly marks the API to be exported and relies on the compiler
|
||||
# to hide all other symbols. CMake supports a C_VISBILITY_PRESET property
|
||||
# starting with 2.8.12.
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
if (NOT CMAKE_VERSION VERSION_LESS 3.3)
|
||||
# Allow symbol visibility settings also on static libraries. CMake < 3.3
|
||||
# only sets the property on a shared library build.
|
||||
cmake_policy(SET CMP0063 NEW)
|
||||
endif ()
|
||||
|
||||
include(CheckIncludeFile)
|
||||
|
||||
# CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which
|
||||
# configures the base build environment and references the toolchain file
|
||||
if (APPLE)
|
||||
if (DEFINED IOS_PLATFORM)
|
||||
if (NOT "${IOS_PLATFORM}" STREQUAL "OS"
|
||||
AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR"
|
||||
AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR64")
|
||||
message(FATAL_ERROR
|
||||
"IOS_PLATFORM must be set to either OS, SIMULATOR, or SIMULATOR64")
|
||||
endif ()
|
||||
if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
|
||||
message(AUTHOR_WARNING
|
||||
"You should use Xcode generator with IOS_PLATFORM enabled to get Universal builds.")
|
||||
endif ()
|
||||
if (BUILD_SHARED_LIBS)
|
||||
message(FATAL_ERROR
|
||||
"BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled")
|
||||
endif ()
|
||||
if (BUILD_FRAMEWORK)
|
||||
message(FATAL_ERROR
|
||||
"BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled")
|
||||
endif ()
|
||||
|
||||
# iOS only uses static libraries
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE
|
||||
${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake)
|
||||
endif ()
|
||||
else ()
|
||||
if (DEFINED IOS_PLATFORM)
|
||||
message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
project(freetype C)
|
||||
|
||||
set(VERSION_MAJOR "2")
|
||||
set(VERSION_MINOR "10")
|
||||
set(VERSION_PATCH "4")
|
||||
|
||||
# Generate LIBRARY_VERSION and LIBRARY_SOVERSION.
|
||||
set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'")
|
||||
file(STRINGS "${PROJECT_SOURCE_DIR}/builds/unix/configure.raw"
|
||||
VERSION_INFO
|
||||
REGEX ${LIBTOOL_REGEX})
|
||||
string(REGEX REPLACE
|
||||
${LIBTOOL_REGEX} "\\1"
|
||||
LIBTOOL_CURRENT "${VERSION_INFO}")
|
||||
string(REGEX REPLACE
|
||||
${LIBTOOL_REGEX} "\\2"
|
||||
LIBTOOL_REVISION "${VERSION_INFO}")
|
||||
string(REGEX REPLACE
|
||||
${LIBTOOL_REGEX} "\\3"
|
||||
LIBTOOL_AGE "${VERSION_INFO}")
|
||||
|
||||
# This is what libtool does internally on Unix platforms.
|
||||
math(EXPR LIBRARY_SOVERSION "${LIBTOOL_CURRENT} - ${LIBTOOL_AGE}")
|
||||
set(LIBRARY_VERSION "${LIBRARY_SOVERSION}.${LIBTOOL_AGE}.${LIBTOOL_REVISION}")
|
||||
|
||||
# External dependency library detection is automatic. See the notes at the top
|
||||
# of this file, for how to force or disable dependencies completely.
|
||||
option(FT_WITH_ZLIB "Use system zlib instead of internal library." OFF)
|
||||
option(FT_WITH_BZIP2 "Support bzip2 compressed fonts." OFF)
|
||||
option(FT_WITH_PNG "Support PNG compressed OpenType embedded bitmaps." OFF)
|
||||
option(FT_WITH_HARFBUZZ "Improve auto-hinting of OpenType fonts." OFF)
|
||||
option(FT_WITH_BROTLI "Support compressed WOFF2 fonts." OFF)
|
||||
|
||||
|
||||
# Disallow in-source builds
|
||||
if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
|
||||
message(FATAL_ERROR
|
||||
"In-source builds are not permitted! Make a separate folder for"
|
||||
" building, e.g.,\n"
|
||||
" cmake -E make_directory build\n"
|
||||
" cmake -E chdir build cmake ..\n"
|
||||
"Before that, remove the files created by this failed run with\n"
|
||||
" cmake -E remove CMakeCache.txt\n"
|
||||
" cmake -E remove_directory CMakeFiles")
|
||||
endif ()
|
||||
|
||||
|
||||
# Add local cmake modules
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/builds/cmake)
|
||||
|
||||
|
||||
if (BUILD_FRAMEWORK)
|
||||
if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
|
||||
message(FATAL_ERROR
|
||||
"You should use Xcode generator with BUILD_FRAMEWORK enabled")
|
||||
endif ()
|
||||
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)")
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
endif ()
|
||||
|
||||
|
||||
# Find dependencies
|
||||
set(HARFBUZZ_MIN_VERSION "2.0.0")
|
||||
if (FT_WITH_HARFBUZZ)
|
||||
find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION} REQUIRED)
|
||||
else ()
|
||||
find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION})
|
||||
endif ()
|
||||
|
||||
if (FT_WITH_PNG)
|
||||
find_package(PNG REQUIRED)
|
||||
else ()
|
||||
find_package(PNG)
|
||||
endif ()
|
||||
|
||||
if (FT_WITH_ZLIB)
|
||||
find_package(ZLIB REQUIRED)
|
||||
else ()
|
||||
find_package(ZLIB)
|
||||
endif ()
|
||||
|
||||
if (FT_WITH_BZIP2)
|
||||
find_package(BZip2 REQUIRED)
|
||||
else ()
|
||||
find_package(BZip2)
|
||||
endif ()
|
||||
|
||||
if (FT_WITH_BROTLI)
|
||||
find_package(BrotliDec REQUIRED)
|
||||
else ()
|
||||
find_package(BrotliDec)
|
||||
endif ()
|
||||
|
||||
# Create the configuration file
|
||||
if (UNIX)
|
||||
check_include_file("unistd.h" HAVE_UNISTD_H)
|
||||
check_include_file("fcntl.h" HAVE_FCNTL_H)
|
||||
|
||||
file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.h.in"
|
||||
FTCONFIG_H)
|
||||
if (HAVE_UNISTD_H)
|
||||
string(REGEX REPLACE
|
||||
"#undef +(HAVE_UNISTD_H)" "#define \\1 1"
|
||||
FTCONFIG_H "${FTCONFIG_H}")
|
||||
endif ()
|
||||
if (HAVE_FCNTL_H)
|
||||
string(REGEX REPLACE
|
||||
"#undef +(HAVE_FCNTL_H)" "#define \\1 1"
|
||||
FTCONFIG_H "${FTCONFIG_H}")
|
||||
endif ()
|
||||
else ()
|
||||
file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h"
|
||||
FTCONFIG_H)
|
||||
endif ()
|
||||
|
||||
set(FTCONFIG_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h")
|
||||
if (EXISTS "${FTCONFIG_H_NAME}")
|
||||
file(READ "${FTCONFIG_H_NAME}" ORIGINAL_FTCONFIG_H)
|
||||
else ()
|
||||
set(ORIGINAL_FTCONFIG_H "")
|
||||
endif ()
|
||||
if (NOT (ORIGINAL_FTCONFIG_H STREQUAL FTCONFIG_H))
|
||||
file(WRITE "${FTCONFIG_H_NAME}" "${FTCONFIG_H}")
|
||||
endif ()
|
||||
|
||||
|
||||
# Create the options file
|
||||
file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h"
|
||||
FTOPTION_H)
|
||||
if (ZLIB_FOUND)
|
||||
string(REGEX REPLACE
|
||||
"/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1"
|
||||
FTOPTION_H "${FTOPTION_H}")
|
||||
endif ()
|
||||
if (BZIP2_FOUND)
|
||||
string(REGEX REPLACE
|
||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1"
|
||||
FTOPTION_H "${FTOPTION_H}")
|
||||
endif ()
|
||||
if (PNG_FOUND)
|
||||
string(REGEX REPLACE
|
||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1"
|
||||
FTOPTION_H "${FTOPTION_H}")
|
||||
endif ()
|
||||
if (HARFBUZZ_FOUND)
|
||||
string(REGEX REPLACE
|
||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1"
|
||||
FTOPTION_H "${FTOPTION_H}")
|
||||
endif ()
|
||||
if (BROTLIDEC_FOUND)
|
||||
string(REGEX REPLACE
|
||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_BROTLI) +\\*/" "\\1"
|
||||
FTOPTION_H "${FTOPTION_H}")
|
||||
endif ()
|
||||
|
||||
set(FTOPTION_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h")
|
||||
if (EXISTS "${FTOPTION_H_NAME}")
|
||||
file(READ "${FTOPTION_H_NAME}" ORIGINAL_FTOPTION_H)
|
||||
else ()
|
||||
set(ORIGINAL_FTOPTION_H "")
|
||||
endif ()
|
||||
if (NOT (ORIGINAL_FTOPTION_H STREQUAL FTOPTION_H))
|
||||
file(WRITE "${FTOPTION_H_NAME}" "${FTOPTION_H}")
|
||||
endif ()
|
||||
|
||||
|
||||
file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h")
|
||||
file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h")
|
||||
file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h")
|
||||
|
||||
|
||||
set(BASE_SRCS
|
||||
src/autofit/autofit.c
|
||||
src/base/ftbase.c
|
||||
src/base/ftbbox.c
|
||||
src/base/ftbdf.c
|
||||
src/base/ftbitmap.c
|
||||
src/base/ftcid.c
|
||||
src/base/ftfstype.c
|
||||
src/base/ftgasp.c
|
||||
src/base/ftglyph.c
|
||||
src/base/ftgxval.c
|
||||
src/base/ftinit.c
|
||||
src/base/ftmm.c
|
||||
src/base/ftotval.c
|
||||
src/base/ftpatent.c
|
||||
src/base/ftpfr.c
|
||||
src/base/ftstroke.c
|
||||
src/base/ftsynth.c
|
||||
src/base/fttype1.c
|
||||
src/base/ftwinfnt.c
|
||||
src/bdf/bdf.c
|
||||
src/bzip2/ftbzip2.c
|
||||
src/cache/ftcache.c
|
||||
src/cff/cff.c
|
||||
src/cid/type1cid.c
|
||||
src/gzip/ftgzip.c
|
||||
src/lzw/ftlzw.c
|
||||
src/pcf/pcf.c
|
||||
src/pfr/pfr.c
|
||||
src/psaux/psaux.c
|
||||
src/pshinter/pshinter.c
|
||||
src/psnames/psnames.c
|
||||
src/raster/raster.c
|
||||
src/sdf/sdf.c
|
||||
src/sfnt/sfnt.c
|
||||
src/smooth/smooth.c
|
||||
src/truetype/truetype.c
|
||||
src/type1/type1.c
|
||||
src/type42/type42.c
|
||||
src/winfonts/winfnt.c
|
||||
)
|
||||
|
||||
if (UNIX)
|
||||
list(APPEND BASE_SRCS "builds/unix/ftsystem.c")
|
||||
elseif (WIN32)
|
||||
list(APPEND BASE_SRCS "builds/windows/ftsystem.c")
|
||||
else ()
|
||||
list(APPEND BASE_SRCS "src/base/ftsystem.c")
|
||||
endif ()
|
||||
|
||||
if (WIN32)
|
||||
enable_language(RC)
|
||||
list(APPEND BASE_SRCS builds/windows/ftdebug.c
|
||||
src/base/ftver.rc)
|
||||
elseif (WINCE)
|
||||
list(APPEND BASE_SRCS builds/wince/ftdebug.c)
|
||||
else ()
|
||||
list(APPEND BASE_SRCS src/base/ftdebug.c)
|
||||
endif ()
|
||||
|
||||
if (BUILD_FRAMEWORK)
|
||||
list(APPEND BASE_SRCS builds/mac/freetype-Info.plist)
|
||||
endif ()
|
||||
|
||||
|
||||
if (NOT DISABLE_FORCE_DEBUG_POSTFIX)
|
||||
set(CMAKE_DEBUG_POSTFIX d)
|
||||
endif ()
|
||||
|
||||
|
||||
add_library(freetype
|
||||
${PUBLIC_HEADERS}
|
||||
${PUBLIC_CONFIG_HEADERS}
|
||||
${PRIVATE_HEADERS}
|
||||
${BASE_SRCS}
|
||||
)
|
||||
|
||||
set_target_properties(
|
||||
freetype PROPERTIES
|
||||
C_VISIBILITY_PRESET hidden)
|
||||
|
||||
target_compile_definitions(
|
||||
freetype PRIVATE FT2_BUILD_LIBRARY)
|
||||
|
||||
if (WIN32)
|
||||
target_compile_definitions(
|
||||
freetype PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
target_compile_definitions(
|
||||
freetype PRIVATE DLL_EXPORT)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (BUILD_SHARED_LIBS)
|
||||
set_target_properties(freetype PROPERTIES
|
||||
VERSION ${LIBRARY_VERSION}
|
||||
SOVERSION ${LIBRARY_SOVERSION})
|
||||
endif ()
|
||||
|
||||
# Pick up ftconfig.h and ftoption.h generated above, first.
|
||||
target_include_directories(
|
||||
freetype
|
||||
PUBLIC
|
||||
$<INSTALL_INTERFACE:include/freetype2>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_BINARY_DIR}/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
|
||||
# Make <ftconfig.h> available for builds/unix/ftsystem.c.
|
||||
${CMAKE_CURRENT_BINARY_DIR}/include/freetype/config
|
||||
)
|
||||
|
||||
|
||||
if (BUILD_FRAMEWORK)
|
||||
set_property(SOURCE ${PUBLIC_CONFIG_HEADERS}
|
||||
PROPERTY MACOSX_PACKAGE_LOCATION Headers/config
|
||||
)
|
||||
set_target_properties(freetype PROPERTIES
|
||||
FRAMEWORK TRUE
|
||||
MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist
|
||||
PUBLIC_HEADER "${PUBLIC_HEADERS}"
|
||||
XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
|
||||
)
|
||||
endif ()
|
||||
|
||||
|
||||
set(PKG_CONFIG_REQUIRED_PRIVATE "")
|
||||
set(PKG_CONFIG_LIBS_PRIVATE "")
|
||||
|
||||
if (ZLIB_FOUND)
|
||||
target_link_libraries(freetype PRIVATE ${ZLIB_LIBRARIES})
|
||||
target_include_directories(freetype PRIVATE ${ZLIB_INCLUDE_DIRS})
|
||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "zlib")
|
||||
endif ()
|
||||
if (BZIP2_FOUND)
|
||||
target_link_libraries(freetype PRIVATE ${BZIP2_LIBRARIES})
|
||||
target_include_directories(freetype PRIVATE ${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS
|
||||
list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2")
|
||||
endif ()
|
||||
if (PNG_FOUND)
|
||||
target_link_libraries(freetype PRIVATE ${PNG_LIBRARIES})
|
||||
target_compile_definitions(freetype PRIVATE ${PNG_DEFINITIONS})
|
||||
target_include_directories(freetype PRIVATE ${PNG_INCLUDE_DIRS})
|
||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libpng")
|
||||
endif ()
|
||||
if (HARFBUZZ_FOUND)
|
||||
target_link_libraries(freetype PRIVATE ${HARFBUZZ_LIBRARIES})
|
||||
target_include_directories(freetype PRIVATE ${HARFBUZZ_INCLUDE_DIRS})
|
||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}")
|
||||
endif ()
|
||||
if (BROTLIDEC_FOUND)
|
||||
target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES})
|
||||
target_compile_definitions(freetype PRIVATE ${BROTLIDEC_DEFINITIONS})
|
||||
target_include_directories(freetype PRIVATE ${BROTLIDEC_INCLUDE_DIRS})
|
||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libbrotlidec")
|
||||
endif ()
|
||||
|
||||
|
||||
# Installation
|
||||
include(GNUInstallDirs)
|
||||
|
||||
if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
|
||||
install(
|
||||
# Note the trailing slash in the argument to `DIRECTORY'!
|
||||
DIRECTORY ${PROJECT_SOURCE_DIR}/include/
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2
|
||||
COMPONENT headers
|
||||
PATTERN "internal" EXCLUDE
|
||||
PATTERN "ftconfig.h" EXCLUDE
|
||||
PATTERN "ftoption.h" EXCLUDE)
|
||||
install(
|
||||
FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h
|
||||
${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config
|
||||
COMPONENT headers)
|
||||
endif ()
|
||||
|
||||
if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
||||
# Generate the pkg-config file
|
||||
file(READ "${PROJECT_SOURCE_DIR}/builds/unix/freetype2.in" FREETYPE2_PC_IN)
|
||||
|
||||
string(REPLACE ";" ", " PKG_CONFIG_REQUIRED_PRIVATE "${PKG_CONFIG_REQUIRED_PRIVATE}")
|
||||
|
||||
string(REPLACE "%prefix%" ${CMAKE_INSTALL_PREFIX}
|
||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
|
||||
string(REPLACE "%exec_prefix%" "\${prefix}"
|
||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
|
||||
string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}"
|
||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
|
||||
string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}"
|
||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
|
||||
string(REPLACE "%ft_version%" "${LIBTOOL_CURRENT}.${LIBTOOL_REVISION}.${LIBTOOL_AGE}"
|
||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
|
||||
string(REPLACE "%REQUIRES_PRIVATE%" "${PKG_CONFIG_REQUIRED_PRIVATE}"
|
||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
|
||||
string(REPLACE "%LIBS_PRIVATE%" "${PKG_CONFIG_LIBS_PRIVATE}"
|
||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
|
||||
|
||||
set(FREETYPE2_PC_IN_NAME "${PROJECT_BINARY_DIR}/freetype2.pc")
|
||||
if (EXISTS "${FREETYPE2_PC_IN_NAME}")
|
||||
file(READ "${FREETYPE2_PC_IN_NAME}" ORIGINAL_FREETYPE2_PC_IN)
|
||||
else ()
|
||||
set(ORIGINAL_FREETYPE2_PC_IN "")
|
||||
endif ()
|
||||
if (NOT (ORIGINAL_FREETYPE2_PC_IN STREQUAL FREETYPE2_PC_IN))
|
||||
file(WRITE "${FREETYPE2_PC_IN_NAME}" ${FREETYPE2_PC_IN})
|
||||
endif ()
|
||||
|
||||
install(
|
||||
FILES ${PROJECT_BINARY_DIR}/freetype2.pc
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
||||
COMPONENT pkgconfig)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
write_basic_package_version_file(
|
||||
${PROJECT_BINARY_DIR}/freetype-config-version.cmake
|
||||
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
install(
|
||||
TARGETS freetype
|
||||
EXPORT freetype-targets
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
FRAMEWORK DESTINATION Library/Frameworks
|
||||
COMPONENT libraries)
|
||||
install(
|
||||
EXPORT freetype-targets
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype
|
||||
FILE freetype-config.cmake
|
||||
COMPONENT headers)
|
||||
install(
|
||||
FILES ${PROJECT_BINARY_DIR}/freetype-config-version.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype
|
||||
COMPONENT headers)
|
||||
endif ()
|
||||
|
||||
|
||||
# Packaging
|
||||
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT")
|
||||
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
|
||||
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
|
||||
|
||||
if (WIN32)
|
||||
set(CPACK_GENERATOR ZIP)
|
||||
else ()
|
||||
set(CPACK_GENERATOR TGZ)
|
||||
endif ()
|
||||
|
||||
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
|
||||
set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers")
|
||||
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION
|
||||
"Library used to build programs which use FreeType")
|
||||
set(CPACK_COMPONENT_HEADERS_DESCRIPTION
|
||||
"C/C++ header files for use with FreeType")
|
||||
set(CPACK_COMPONENT_HEADERS_DEPENDS libraries)
|
||||
set(CPACK_COMPONENT_LIBRARIES_GROUP "Development")
|
||||
set(CPACK_COMPONENT_HEADERS_GROUP "Development")
|
||||
|
||||
include(CPack)
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -29,12 +29,16 @@ The contributed BDF and PCF drivers come with a license similar to
|
|||
that of the X Window System. It is compatible to the above two
|
||||
licenses (see files `src/bdf/README` and `src/pcf/README`). The same
|
||||
holds for the source code files `src/base/fthash.c` and
|
||||
`include/freetype/internal/fthash.h`; they wer part of the BDF driver
|
||||
`include/freetype/internal/fthash.h`; they were part of the BDF driver
|
||||
in earlier FreeType versions.
|
||||
|
||||
The gzip module uses the zlib license (see `src/gzip/zlib.h`) which
|
||||
too is compatible to the above two licenses.
|
||||
|
||||
The files `src/autofit/ft-hb.c` and `src/autofit/ft-hb.h` contain code
|
||||
taken almost verbatim from the HarfBuzz file `hb-ft.cc`, which uses
|
||||
the 'Old MIT' license, compatible to the above two licenses.
|
||||
|
||||
The MD5 checksum support (only used for debugging in development
|
||||
builds) is in the public domain.
|
||||
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
#
|
||||
# FreeType 2 build system -- top-level Makefile
|
||||
#
|
||||
|
||||
|
||||
# Copyright (C) 1996-2021 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
# and distributed under the terms of the FreeType project license,
|
||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you
|
||||
# indicate that you have read the license and understand and accept it
|
||||
# fully.
|
||||
|
||||
|
||||
# Project names
|
||||
#
|
||||
PROJECT := freetype
|
||||
PROJECT_TITLE := FreeType
|
||||
|
||||
# The variable TOP_DIR holds the path to the topmost directory in the project
|
||||
# engine source hierarchy. If it is not defined, default it to `.'.
|
||||
#
|
||||
TOP_DIR ?= .
|
||||
|
||||
# The variable OBJ_DIR gives the location where object files and the
|
||||
# FreeType library are built.
|
||||
#
|
||||
OBJ_DIR ?= $(TOP_DIR)/objs
|
||||
|
||||
|
||||
include $(TOP_DIR)/builds/toplevel.mk
|
||||
|
||||
# EOF
|
|
@ -1,4 +1,4 @@
|
|||
FreeType 2.10.4
|
||||
FreeType 2.13.2
|
||||
===============
|
||||
|
||||
Homepage: https://www.freetype.org
|
||||
|
@ -16,7 +16,9 @@ Read the files `docs/INSTALL*` for installation instructions; see the
|
|||
file `docs/LICENSE.TXT` for the available licenses.
|
||||
|
||||
For using FreeType's git repository instead of a distribution bundle,
|
||||
please read file `README.git`.
|
||||
please read file `README.git`. Note that you have to actually clone
|
||||
the repository; using a snapshot will not work (in other words, don't
|
||||
use gitlab's 'Download' button).
|
||||
|
||||
The FreeType 2 API reference is located in directory `docs/reference`;
|
||||
use the file `index.html` as the top entry point. [Please note that
|
||||
|
@ -30,9 +32,9 @@ sites. Go to
|
|||
|
||||
and download one of the following files.
|
||||
|
||||
freetype-doc-2.10.4.tar.xz
|
||||
freetype-doc-2.10.4.tar.gz
|
||||
ftdoc2104.zip
|
||||
freetype-doc-2.13.2.tar.xz
|
||||
freetype-doc-2.13.2.tar.gz
|
||||
ftdoc2132.zip
|
||||
|
||||
To view the documentation online, go to
|
||||
|
||||
|
@ -88,12 +90,11 @@ Details on the process can be found here:
|
|||
|
||||
Enjoy!
|
||||
|
||||
|
||||
The FreeType Team
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2006-2021 by
|
||||
Copyright (C) 2006-2023 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
README.git
|
||||
----------
|
||||
==========
|
||||
|
||||
|
||||
repository issues
|
||||
-----------------
|
||||
|
||||
FreeType's official repository site is
|
||||
|
||||
|
@ -23,7 +27,10 @@ digit '2' for historical reasons.
|
|||
freetype-demos
|
||||
|
||||
|
||||
The git archive doesn't contain pre-built configuration scripts for
|
||||
standard builds with `configure`
|
||||
--------------------------------
|
||||
|
||||
The git repository doesn't contain pre-built configuration scripts for
|
||||
UNIXish platforms. To generate them say
|
||||
|
||||
sh autogen.sh
|
||||
|
@ -38,54 +45,51 @@ The versions given in parentheses are known to work. Newer versions
|
|||
should work too, of course. Note that `autogen.sh` also sets up
|
||||
proper file permissions for the `configure` and auxiliary scripts.
|
||||
|
||||
The `autogen.sh` script now checks the versions of the above three
|
||||
packages whether they match the numbers above. Otherwise it will
|
||||
complain and suggest either upgrading or using an environment variable
|
||||
to point to a more recent version of the required tool(s).
|
||||
The `autogen.sh` script checks whether the versions of the above three
|
||||
tools match the numbers above. Otherwise it will complain and suggest
|
||||
either upgrading or using environment variables to point to more
|
||||
recent versions of the required tools.
|
||||
|
||||
Note that `aclocal` is provided by the 'automake' package on Linux,
|
||||
and that `libtoolize` is called `glibtoolize` on Darwin (OS X).
|
||||
|
||||
|
||||
alternative build methods
|
||||
-------------------------
|
||||
|
||||
For static builds that don't use platform-specific optimizations, no
|
||||
configure script is necessary at all; saying
|
||||
|
||||
make setup ansi
|
||||
make
|
||||
|
||||
should work on all platforms that have GNU `make` (or `makepp`).
|
||||
Similarly, a build with `cmake` or `meson` can be done directly from
|
||||
the git repository.
|
||||
should work on all platforms that have GNU `make` (or `makepp`).
|
||||
|
||||
A build with `cmake` or `meson` can be done directly from the git
|
||||
repository. However, if you want to use the `FT_DEBUG_LOGGING` macro
|
||||
(see file `docs/DEBUG` for more information) it is currently mandatory
|
||||
to execute `autogen.sh` in advance; this script clones the 'dlg' git
|
||||
submodule and copies some files into FreeType's source tree.
|
||||
|
||||
|
||||
For using the `FT_DEBUG_LOGGING` macro while debugging (see file
|
||||
`docs/DEBUG` for more information) the following git commands are
|
||||
necessary to check out the 'dlg' library as a git submodule.
|
||||
Code of Conduct
|
||||
---------------
|
||||
|
||||
git submodule init
|
||||
git submodule update
|
||||
Please note that this project is released with a Contributor Code of
|
||||
Conduct (CoC). By participating in this project you agree to abide by
|
||||
its terms, which you can find in the following link:
|
||||
|
||||
https://www.freedesktop.org/wiki/CodeOfConduct
|
||||
|
||||
If you want to contribute to FreeType it is recommended to install the
|
||||
`git-merge-changelog` program – we use a `ChangeLog` file, which often
|
||||
prevents simple merging due to conflicts. Most GNU/Linux
|
||||
distributions have a package for this program; otherwise you can
|
||||
install it via the 'gnulib' git repository. Detailed instructions can
|
||||
be found at the beginning of
|
||||
|
||||
https://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/git-merge-changelog.c
|
||||
|
||||
To make it actually work, add to file `.git/config` in the FreeType
|
||||
git repository (or to your `$HOME/.gitconfig` file) the lines
|
||||
|
||||
[merge "merge-changelog"]
|
||||
name = GNU-style ChangeLog merge driver
|
||||
driver = /usr/local/bin/git-merge-changelog %O %A %B
|
||||
CoC issues may be raised to the project maintainers at the following
|
||||
address:
|
||||
|
||||
wl@gnu.org
|
||||
apodtele@gmail.com
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2005-2021 by
|
||||
Copyright (C) 2005-2023 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* FreeType 2 build and setup macros (development version).
|
||||
*
|
||||
* Copyright (C) 1996-2021 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
|
@ -32,7 +32,6 @@
|
|||
|
||||
#define FT_CONFIG_MODULES_H <ftmodule.h>
|
||||
#define FT_CONFIG_OPTIONS_H <ftoption.h>
|
||||
#define FT_CONFIG_STANDARD_LIBRARY_H <ftstdlib.h>
|
||||
|
||||
#include <freetype/config/ftheader.h>
|
||||
|
||||
|
|
|
@ -25,6 +25,6 @@ FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class )
|
|||
// FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
||||
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
|
||||
// FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/****************************************************************************
|
||||
*
|
||||
* ftoption.h
|
||||
* ftoption.h (for development)
|
||||
*
|
||||
* User-selectable configuration macros (specification only).
|
||||
*
|
||||
* Copyright (C) 1996-2021 by
|
||||
* Copyright (C) 1996-2023 by
|
||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
*
|
||||
* This file is part of the FreeType project, and may only be used,
|
||||
|
@ -15,6 +15,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef FTOPTION_H_
|
||||
#define FTOPTION_H_
|
||||
|
||||
|
@ -104,8 +105,7 @@ FT_BEGIN_HEADER
|
|||
*
|
||||
* ```
|
||||
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
||||
* cff:no-stem-darkening=1 \
|
||||
* autofitter:warping=1
|
||||
* cff:no-stem-darkening=1
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
|
@ -219,6 +219,10 @@ FT_BEGIN_HEADER
|
|||
* If you use a build system like cmake or the `configure` script,
|
||||
* options set by those programs have precedence, overwriting the value
|
||||
* here with the configured one.
|
||||
*
|
||||
* If you use the GNU make build system directly (that is, without the
|
||||
* `configure` script) and you define this macro, you also have to pass
|
||||
* `SYSTEM_ZLIB=yes` as an argument to make.
|
||||
*/
|
||||
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
||||
|
||||
|
@ -457,9 +461,9 @@ FT_BEGIN_HEADER
|
|||
* while compiling in 'release' mode):
|
||||
*
|
||||
* ```
|
||||
* _af_debug_disable_horz_hints
|
||||
* _af_debug_disable_vert_hints
|
||||
* _af_debug_disable_blue_hints
|
||||
* af_debug_disable_horz_hints_
|
||||
* af_debug_disable_vert_hints_
|
||||
* af_debug_disable_blue_hints_
|
||||
* ```
|
||||
*
|
||||
* Additionally, the following functions provide dumps of various
|
||||
|
@ -476,7 +480,7 @@ FT_BEGIN_HEADER
|
|||
* As an argument, they use another global variable:
|
||||
*
|
||||
* ```
|
||||
* _af_debug_hints
|
||||
* af_debug_hints_
|
||||
* ```
|
||||
*
|
||||
* Please have a look at the `ftgrid` demo program to see how those
|
||||
|
@ -520,7 +524,21 @@ FT_BEGIN_HEADER
|
|||
*
|
||||
* More details can be found in the files `ftmoderr.h` and `fterrors.h`.
|
||||
*/
|
||||
/* #undef FT_CONFIG_OPTION_USE_MODULE_ERRORS */
|
||||
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* OpenType SVG Glyph Support
|
||||
*
|
||||
* Setting this macro enables support for OpenType SVG glyphs. By
|
||||
* default, FreeType can only fetch SVG documents. However, it can also
|
||||
* render them if external rendering hook functions are plugged in at
|
||||
* runtime.
|
||||
*
|
||||
* More details on the hooks can be found in file `otsvg.h`.
|
||||
*/
|
||||
// #define FT_CONFIG_OPTION_SVG
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -566,12 +584,12 @@ FT_BEGIN_HEADER
|
|||
/**************************************************************************
|
||||
*
|
||||
* Define `TT_CONFIG_OPTION_POSTSCRIPT_NAMES` if you want to be able to
|
||||
* load and enumerate the glyph Postscript names in a TrueType or OpenType
|
||||
* load and enumerate Postscript names of glyphs in a TrueType or OpenType
|
||||
* file.
|
||||
*
|
||||
* Note that when you do not compile the 'psnames' module by undefining the
|
||||
* above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES`, the 'sfnt' module will
|
||||
* contain additional code used to read the PS Names table from a font.
|
||||
* Note that if you do not compile the 'psnames' module by undefining the
|
||||
* above `FT_CONFIG_OPTION_POSTSCRIPT_NAMES` macro, the 'sfnt' module will
|
||||
* contain additional code to read the PostScript name table from a font.
|
||||
*
|
||||
* (By default, the module uses 'psnames' to extract glyph names.)
|
||||
*/
|
||||
|
@ -643,36 +661,12 @@ FT_BEGIN_HEADER
|
|||
* not) instructions in a certain way so that all TrueType fonts look like
|
||||
* they do in a Windows ClearType (DirectWrite) environment. See [1] for a
|
||||
* technical overview on what this means. See `ttinterp.h` for more
|
||||
* details on the LEAN option.
|
||||
* details on this option.
|
||||
*
|
||||
* There are three possible values.
|
||||
*
|
||||
* Value 1:
|
||||
* This value is associated with the 'Infinality' moniker, contributed by
|
||||
* an individual nicknamed Infinality with the goal of making TrueType
|
||||
* fonts render better than on Windows. A high amount of configurability
|
||||
* and flexibility, down to rules for single glyphs in fonts, but also
|
||||
* very slow. Its experimental and slow nature and the original
|
||||
* developer losing interest meant that this option was never enabled in
|
||||
* default builds.
|
||||
*
|
||||
* The corresponding interpreter version is v38.
|
||||
*
|
||||
* Value 2:
|
||||
* The new default mode for the TrueType driver. The Infinality code
|
||||
* base was stripped to the bare minimum and all configurability removed
|
||||
* in the name of speed and simplicity. The configurability was mainly
|
||||
* aimed at legacy fonts like 'Arial', 'Times New Roman', or 'Courier'.
|
||||
* Legacy fonts are fonts that modify vertical stems to achieve clean
|
||||
* black-and-white bitmaps. The new mode focuses on applying a minimal
|
||||
* set of rules to all fonts indiscriminately so that modern and web
|
||||
* fonts render well while legacy fonts render okay.
|
||||
*
|
||||
* The corresponding interpreter version is v40.
|
||||
*
|
||||
* Value 3:
|
||||
* Compile both, making both v38 and v40 available (the latter is the
|
||||
* default).
|
||||
* The new default mode focuses on applying a minimal set of rules to all
|
||||
* fonts indiscriminately so that modern and web fonts render well while
|
||||
* legacy fonts render okay. The corresponding interpreter version is v40.
|
||||
* The so-called Infinality mode (v38) is no longer available in FreeType.
|
||||
*
|
||||
* By undefining these, you get rendering behavior like on Windows without
|
||||
* ClearType, i.e., Windows XP without ClearType enabled and Win9x
|
||||
|
@ -687,9 +681,7 @@ FT_BEGIN_HEADER
|
|||
* [1]
|
||||
* https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
|
||||
*/
|
||||
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
|
||||
#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2
|
||||
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */
|
||||
#define TT_CONFIG_OPTION_SUBPIXEL_HINTING
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -721,12 +713,30 @@ FT_BEGIN_HEADER
|
|||
// #define TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Define `TT_CONFIG_OPTION_NO_BORING_EXPANSION` if you want to exclude
|
||||
* support for 'boring' OpenType specification expansions.
|
||||
*
|
||||
* https://github.com/harfbuzz/boring-expansion-spec
|
||||
*
|
||||
* Right now, the following features are covered:
|
||||
*
|
||||
* - 'avar' version 2.0
|
||||
*
|
||||
* Most likely, this is a temporary configuration option to be removed in
|
||||
* the near future, since it is assumed that eventually those features are
|
||||
* added to the OpenType standard.
|
||||
*/
|
||||
/* #define TT_CONFIG_OPTION_NO_BORING_EXPANSION */
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Define `TT_CONFIG_OPTION_BDF` if you want to include support for an
|
||||
* embedded 'BDF~' table within SFNT-based bitmap formats.
|
||||
*/
|
||||
// #define TT_CONFIG_OPTION_BDF
|
||||
#define TT_CONFIG_OPTION_BDF
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -790,7 +800,7 @@ FT_BEGIN_HEADER
|
|||
* into an existing face. Note that if set, the Type~1 driver will be
|
||||
* unable to produce kerning distances.
|
||||
*/
|
||||
/* #undef T1_CONFIG_OPTION_NO_AFM */
|
||||
// #undef T1_CONFIG_OPTION_NO_AFM
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -798,7 +808,7 @@ FT_BEGIN_HEADER
|
|||
* Define this configuration macro if you want to prevent the compilation
|
||||
* of the Multiple Masters font support in the Type~1 driver.
|
||||
*/
|
||||
/* #undef T1_CONFIG_OPTION_NO_MM_SUPPORT */
|
||||
// #undef T1_CONFIG_OPTION_NO_MM_SUPPORT
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -808,7 +818,7 @@ FT_BEGIN_HEADER
|
|||
* switch between the two engines using the `hinting-engine` property of
|
||||
* the 'type1' driver module.
|
||||
*/
|
||||
/* #define T1_CONFIG_OPTION_OLD_ENGINE */
|
||||
// #define T1_CONFIG_OPTION_OLD_ENGINE
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -850,7 +860,7 @@ FT_BEGIN_HEADER
|
|||
* between the two engines using the `hinting-engine` property of the 'cff'
|
||||
* driver module.
|
||||
*/
|
||||
/* #define CFF_CONFIG_OPTION_OLD_ENGINE */
|
||||
// #define CFF_CONFIG_OPTION_OLD_ENGINE
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -877,7 +887,7 @@ FT_BEGIN_HEADER
|
|||
* If this option is activated, it can be controlled with the
|
||||
* `no-long-family-names` property of the 'pcf' driver module.
|
||||
*/
|
||||
/* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */
|
||||
// #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -908,24 +918,6 @@ FT_BEGIN_HEADER
|
|||
#endif
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Compile 'autofit' module with warp hinting. The idea of the warping
|
||||
* code is to slightly scale and shift a glyph within a single dimension so
|
||||
* that as much of its segments are aligned (more or less) on the grid. To
|
||||
* find out the optimal scaling and shifting value, various parameter
|
||||
* combinations are tried and scored.
|
||||
*
|
||||
* You can switch warping on and off with the `warping` property of the
|
||||
* auto-hinter (see file `ftdriver.h` for more information; by default it
|
||||
* is switched off).
|
||||
*
|
||||
* This experimental option is not active if the rendering mode is
|
||||
* `FT_RENDER_MODE_LIGHT`.
|
||||
*/
|
||||
// #define AF_CONFIG_OPTION_USE_WARPER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Use TrueType-like size metrics for 'light' auto-hinting.
|
||||
|
@ -959,21 +951,14 @@ FT_BEGIN_HEADER
|
|||
|
||||
|
||||
/*
|
||||
* The next three macros are defined if native TrueType hinting is
|
||||
* The next two macros are defined if native TrueType hinting is
|
||||
* requested by the definitions above. Don't change this.
|
||||
*/
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING
|
||||
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1
|
||||
#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
|
||||
#endif
|
||||
|
||||
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2
|
||||
#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1020,8 +1005,8 @@ FT_BEGIN_HEADER
|
|||
#error "Invalid CFF darkening parameters!"
|
||||
#endif
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTOPTION_H_ */
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,2 +0,0 @@
|
|||
Support for a cmake build has been contributed. See the remarks in the
|
||||
top-level `CMakeLists.txt' file for more.
|
|
@ -1,152 +0,0 @@
|
|||
How to customize the compilation of the library
|
||||
===============================================
|
||||
|
||||
FreeType is highly customizable to fit various needs, and this
|
||||
document describes how it is possible to select options and
|
||||
components at compilation time.
|
||||
|
||||
|
||||
I. Configuration macros
|
||||
|
||||
The file `include/freetype/config/ftoption.h' contains a list of
|
||||
commented configuration macros that can be toggled by developers to
|
||||
indicate which features should be active while building the library.
|
||||
|
||||
These options range from debug level to availability of certain
|
||||
features, like native TrueType hinting through a bytecode
|
||||
interpreter.
|
||||
|
||||
We invite you to read this file for more information. You can
|
||||
change the file's content to suit your needs, or override it with
|
||||
one of the techniques described below.
|
||||
|
||||
|
||||
II. Modules list
|
||||
|
||||
If you use GNU make please edit the top-level file `modules.cfg'.
|
||||
It contains a list of available FreeType modules and extensions to
|
||||
be compiled. Change it to suit your own preferences. Be aware that
|
||||
certain modules depend on others, as described in the file. GNU
|
||||
make uses `modules.cfg' to generate `ftmodule.h' (in the object
|
||||
directory).
|
||||
|
||||
If you build FreeType in a directory separate from the source files,
|
||||
put your customized `modules.cfg' in that directory; that way you
|
||||
can keep the source files `clean'.
|
||||
|
||||
If you don't use GNU make you have to manually edit the file
|
||||
`include/freetype/config/ftmodule.h' (which is *not* used with if
|
||||
compiled with GNU make) to add or remove the drivers and components
|
||||
you want to compile into the library. See `INSTALL.ANY' for more
|
||||
information.
|
||||
|
||||
|
||||
III. System interface
|
||||
|
||||
FreeType's default interface to the system (i.e., the parts that
|
||||
deal with memory management and i/o streams) is located in
|
||||
`src/base/ftsystem.c'.
|
||||
|
||||
The current implementation uses standard C library calls to manage
|
||||
memory and to read font files. It is however possible to write
|
||||
custom implementations to suit specific systems.
|
||||
|
||||
To tell the GNU Make-based build system to use a custom system
|
||||
interface, you have to define the environment variable FTSYS_SRC to
|
||||
point to the relevant implementation:
|
||||
|
||||
on Unix:
|
||||
|
||||
./configure <your options>
|
||||
export FTSYS_SRC=foo/my_ftsystem.c
|
||||
make
|
||||
make install
|
||||
|
||||
on Windows:
|
||||
|
||||
make setup <compiler>
|
||||
set FTSYS_SRC=foo/my_ftsystem.c
|
||||
make
|
||||
|
||||
|
||||
IV. Overriding default configuration and module headers
|
||||
|
||||
It is possible to override the default configuration and module
|
||||
headers without changing the original files. There are three ways
|
||||
to do that:
|
||||
|
||||
|
||||
1. With GNU make
|
||||
|
||||
[This is actually a combination of method 2 and 3.]
|
||||
|
||||
Just put your custom `ftoption.h' file into the objects directory
|
||||
(normally `<topdir>/objs' if you build in the source tree, or the
|
||||
directory where you invoke configure if you build in a separate
|
||||
directory), which GNU make prefers over the standard location. No
|
||||
action is needed for `ftmodule.h' because it is generated
|
||||
automatically in the objects directory.
|
||||
|
||||
2. Using the C include path
|
||||
|
||||
Use the C include path to ensure that your own versions of the
|
||||
files are used at compile time when the lines
|
||||
|
||||
#include FT_CONFIG_OPTIONS_H
|
||||
#include FT_CONFIG_MODULES_H
|
||||
|
||||
are compiled. Their default values being
|
||||
<freetype/config/ftoption.h> and <freetype/config/ftmodule.h>, you
|
||||
can do something like:
|
||||
|
||||
custom/
|
||||
config/
|
||||
ftoption.h => custom options header
|
||||
ftmodule.h => custom modules list
|
||||
|
||||
include/ => normal FreeType 2 include
|
||||
...
|
||||
|
||||
then change the C include path to always give the path to `custom'
|
||||
before the FreeType 2 `include'.
|
||||
|
||||
|
||||
3. Redefining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H
|
||||
|
||||
Another way to do the same thing is to redefine the macros used to
|
||||
name the configuration headers. To do so, you need a custom
|
||||
`ft2build.h' whose content can be as simple as:
|
||||
|
||||
#ifndef FT2_BUILD_MY_PLATFORM_H_
|
||||
#define FT2_BUILD_MY_PLATFORM_H_
|
||||
|
||||
#define FT_CONFIG_OPTIONS_H <custom/my-ftoption.h>
|
||||
#define FT_CONFIG_MODULES_H <custom/my-ftmodule.h>
|
||||
|
||||
#include <freetype/config/ftheader.h>
|
||||
|
||||
#endif /* FT2_BUILD_MY_PLATFORM_H_ */
|
||||
|
||||
Place those files in a separate directory, e.g.,
|
||||
|
||||
custom/
|
||||
ft2build.h => custom version described above
|
||||
my-ftoption.h => custom options header
|
||||
my-ftmodule.h => custom modules list header
|
||||
|
||||
and change the C include path to ensure that `custom' is always
|
||||
placed before the FT2 `include' during compilation.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2003-2020 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
modified, and distributed under the terms of the FreeType project
|
||||
license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
this file you indicate that you have read the license and understand
|
||||
and accept it fully.
|
||||
|
||||
|
||||
--- end of CUSTOMIZE ---
|
|
@ -1,216 +0,0 @@
|
|||
Debugging within the FreeType sources
|
||||
=====================================
|
||||
|
||||
I. Configuration macros
|
||||
-----------------------
|
||||
|
||||
There are several ways to enable debugging features in a FreeType 2
|
||||
builds. This is controlled through the definition of special macros
|
||||
located in the file `ftoption.h'. The macros are:
|
||||
|
||||
|
||||
FT_DEBUG_LEVEL_ERROR
|
||||
|
||||
#define this macro if you want to compile the `FT_ERROR' macro
|
||||
calls to print error messages during program execution. This does
|
||||
not stop the program. Very useful to spot invalid fonts during
|
||||
development and to code workarounds for them.
|
||||
|
||||
FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
#define this macro if you want to compile both macros `FT_ERROR'
|
||||
and `FT_TRACE'. This also includes the variants `FT_TRACE0',
|
||||
`FT_TRACE1', `FT_TRACE2', ..., `FT_TRACE7'.
|
||||
|
||||
The trace macros are used to send debugging messages when an
|
||||
appropriate `debug level' is configured at runtime through the
|
||||
`FT2_DEBUG' environment variable (more on this later).
|
||||
|
||||
FT_DEBUG_MEMORY
|
||||
|
||||
If this macro is #defined, the FreeType engine is linked with a
|
||||
small but effective debugging memory manager that tracks all
|
||||
allocations and frees that are performed within the font engine.
|
||||
|
||||
When the `FT2_DEBUG_MEMORY' environment variable is defined at
|
||||
runtime, a call to `FT_Done_FreeType' dumps memory statistics,
|
||||
including the list of leaked memory blocks and optionally with the
|
||||
source locations where these were allocated. It is always a very
|
||||
good idea to define this in development builds. This works with
|
||||
_any_ program linked to FreeType, but requires a big deal of
|
||||
memory (the debugging memory manager never frees the blocks to the
|
||||
heap in order to detect double frees).
|
||||
|
||||
When `FT2_DEBUG_MEMORY' isn't defined at runtime, the debugging
|
||||
memory manager is ignored, and performance is unaffected.
|
||||
|
||||
|
||||
II. Debugging macros
|
||||
--------------------
|
||||
|
||||
Several macros can be used within the FreeType sources to help
|
||||
debugging its code:
|
||||
|
||||
|
||||
1. FT_ERROR(( ... ))
|
||||
|
||||
This macro is used to send debug messages that indicate relatively
|
||||
serious errors (like broken font files) without stopping the
|
||||
execution of the running program. Its code is compiled only when
|
||||
either `FT_DEBUG_LEVEL_ERROR' or `FT_DEBUG_LEVEL_TRACE' are
|
||||
defined in `ftoption.h'.
|
||||
|
||||
Note that you have to use a printf-like signature, but with double
|
||||
parentheses, like in
|
||||
|
||||
FT_ERROR(( "your %s is not %s\n", "foo", "bar" ));
|
||||
|
||||
|
||||
2. FT_ASSERT( condition )
|
||||
|
||||
This macro is used to check strong assertions at runtime. If its
|
||||
condition isn't TRUE, the program aborts with a panic message.
|
||||
Its code is compiled when either `FT_DEBUG_LEVEL_ERROR' or
|
||||
`FT_DEBUG_LEVEL_TRACE' are defined. You don't need double
|
||||
parentheses here. Example:
|
||||
|
||||
FT_ASSERT( ptr != NULL );
|
||||
|
||||
|
||||
3. FT_TRACE( level, (message...) )
|
||||
|
||||
The `FT_TRACE' macro is used to send general-purpose debugging
|
||||
messages during program execution. This macro uses an *implicit*
|
||||
macro named `FT_COMPONENT', which names the current FreeType
|
||||
component being run.
|
||||
|
||||
The developer should always define `FT_COMPONENT' as appropriate,
|
||||
for example as in
|
||||
|
||||
#undef FT_COMPONENT
|
||||
#define FT_COMPONENT io
|
||||
|
||||
The value of the `FT_COMPONENT' macro is one of the component
|
||||
names defined in the internal file `internal/fttrace.h'. If you
|
||||
modify the FreeType source code and insert a new `FT_COMPONENT'
|
||||
macro, you must register it in `fttrace.h'. If you insert or
|
||||
remove many trace macros, you can test for undefined or unused
|
||||
trace macros with the script `src/tools/chktrcmp.py'.
|
||||
|
||||
Each such component is assigned a `debug level', ranging from
|
||||
value 0 to 7, through the use of the `FT2_DEBUG' environment
|
||||
variable (described below) when a program linked with FreeType
|
||||
starts.
|
||||
|
||||
When `FT_TRACE' is called, its level is compared to the one of the
|
||||
corresponding component. Messages with trace levels *higher* than
|
||||
the corresponding component level are filtered out and never
|
||||
printed. This means that trace messages with level 0 are always
|
||||
printed, those with level 2 are only printed when the component
|
||||
level is *at least* 2, etc.
|
||||
|
||||
The second parameter to `FT_TRACE' must contain parentheses and
|
||||
corresponds to a printf-like call, as in
|
||||
|
||||
FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) )
|
||||
|
||||
The shortcut macros `FT_TRACE0', `FT_TRACE1', `FT_TRACE2', ...,
|
||||
`FT_TRACE7' can be used with constant level indices, and are much
|
||||
cleaner to use, as in
|
||||
|
||||
FT_TRACE2(( "your %s is not %s\n", "foo", "bar" ));
|
||||
|
||||
|
||||
III. Environment variables
|
||||
--------------------------
|
||||
|
||||
The following environment variables control debugging output and
|
||||
behaviour of FreeType at runtime.
|
||||
|
||||
|
||||
FT2_DEBUG
|
||||
|
||||
This variable is only used when FreeType is built with
|
||||
`FT_DEBUG_LEVEL_TRACE' defined. It contains a list of component
|
||||
level definitions, following this format:
|
||||
|
||||
component1:level1 component2:level2 component3:level3 ...
|
||||
|
||||
where `componentX' is the name of a tracing component, as defined
|
||||
in `fttrace.h'. `levelX' is the corresponding level to use at
|
||||
runtime.
|
||||
|
||||
`any' is a special component name that is interpreted as `any/all
|
||||
components'. For example, the following definitions
|
||||
|
||||
set FT2_DEBUG=any:2 memory:5 io:4 (on Windows)
|
||||
export FT2_DEBUG="any:2 memory:5 io:4" (on Linux with bash)
|
||||
|
||||
both stipulate that all components should have level 2, except for
|
||||
the memory and io components, which are set to the trace levels 5
|
||||
and 4, respectively.
|
||||
|
||||
|
||||
FT2_DEBUG_MEMORY
|
||||
|
||||
This environment variable, when defined, tells FreeType to use a
|
||||
debugging memory manager that tracks leaking memory blocks as well
|
||||
as other common errors like double frees. It is also capable of
|
||||
reporting _where_ the leaking blocks were allocated, which
|
||||
considerably saves time when debugging new additions to the
|
||||
library.
|
||||
|
||||
This code is only compiled when FreeType is built with the
|
||||
`FT_DEBUG_MEMORY' macro #defined in `ftoption.h' though, it is
|
||||
ignored in other builds.
|
||||
|
||||
|
||||
FT2_ALLOC_TOTAL_MAX
|
||||
|
||||
This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. It
|
||||
allows you to specify a maximum heap size for all memory
|
||||
allocations performed by FreeType. This is very useful to test
|
||||
the robustness of the font engine and programs that use it in
|
||||
tight memory conditions.
|
||||
|
||||
If it is undefined, or if its value is not strictly positive, no
|
||||
allocation bounds are checked at runtime.
|
||||
|
||||
|
||||
FT2_ALLOC_COUNT_MAX
|
||||
|
||||
This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. It
|
||||
allows you to specify a maximum number of memory allocations
|
||||
performed by FreeType before returning the error
|
||||
`FT_Err_Out_Of_Memory'. This is useful for debugging and testing
|
||||
the engine's robustness.
|
||||
|
||||
If it is undefined, or if its value is not strictly positive, no
|
||||
allocation bounds are checked at runtime.
|
||||
|
||||
|
||||
FT2_KEEP_ALIVE
|
||||
|
||||
This variable is ignored if `FT2_DEBUG_MEMORY' is not defined.
|
||||
`Keep alive' means that freed blocks aren't released to the heap.
|
||||
This is useful to detect double-frees or weird heap corruption,
|
||||
reporting the source code location of the original allocation and
|
||||
deallocation in case of a problem. It uses large amounts of
|
||||
memory, however.
|
||||
|
||||
If it is undefined, or if its value is not strictly positive,
|
||||
freed blocks are released at runtime.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2002-2020 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
modified, and distributed under the terms of the FreeType project
|
||||
license, LICENSE.TXT. By continuing to use, modify, or distribute this
|
||||
file you indicate that you have read the license and understand and
|
||||
accept it fully.
|
||||
|
||||
|
||||
--- end of DEBUG ---
|
|
@ -1,298 +0,0 @@
|
|||
Introduction
|
||||
------------
|
||||
|
||||
Documentation is an extremely important part of any project, and it
|
||||
helps a lot if it uses consistent syntax and layout.
|
||||
|
||||
The documentation for the FreeType library is maintained in header
|
||||
files in the `include/` directory in the form of code comments. These
|
||||
comments are extracted and organized by 'docwriter' (previously
|
||||
'docmaker'). The generated docs can be viewed in the
|
||||
`docs/reference/site/` directory after running `make refdoc`.
|
||||
|
||||
Documentation comments follow a specific structure and format as
|
||||
described below.
|
||||
|
||||
|
||||
Documentation Structure
|
||||
-----------------------
|
||||
|
||||
The documentation is divided into multiple chapters, which contain
|
||||
sections relevant to it. The chapter details and sections contained
|
||||
in them are listed in `include/freetype/ftchapters.h`. Any unlisted
|
||||
section is added to the 'Miscellaneous' chapter.
|
||||
|
||||
Sections may contain sub-sections which consist of properties,
|
||||
enumerations, and other data types.
|
||||
|
||||
|
||||
Comment Blocks
|
||||
--------------
|
||||
|
||||
Documentation blocks follow a specific format:
|
||||
|
||||
/***************************** (should end on column 77)
|
||||
*
|
||||
* (1 asterisk, 1 space, then content)
|
||||
*
|
||||
*/ (end of block)
|
||||
|
||||
To make 'docwriter' recognize a comment block, there must be at least
|
||||
two asterisks in the first line. As a consequence, you should change
|
||||
the second asterisk to something else if you want to prevent a comment
|
||||
block being handled by 'docwriter' (for example, change `/****/` to
|
||||
`/*#**/`).
|
||||
|
||||
|
||||
Markup Tags
|
||||
-----------
|
||||
|
||||
Markup tags are used to indicate what comes next. The syntax for a
|
||||
tag is:
|
||||
|
||||
@foo:
|
||||
|
||||
An `@`, followed by the tag, and then `:`.
|
||||
|
||||
|
||||
Reserved Tags
|
||||
-------------
|
||||
|
||||
There are some keywords that have a special meaning to docwriter.
|
||||
As a convention, all keywords are written in lowercase.
|
||||
|
||||
* `chapter`: Defines a chapter. Usually the title with underscores.
|
||||
* `sections`: List of sections in the chapter, in order.
|
||||
* `section`: Defines the start or continuation of a section.
|
||||
* `title`: Title for a chapter or section. May contain spaces.
|
||||
* `abstract`: The abstract for a section, visible in the Table of
|
||||
Contents (TOC).
|
||||
* `description`: Detailed description of a tag (except chapters),
|
||||
shown as synopsis.
|
||||
* `values`: A list of 'values' for the tag. These values are used for
|
||||
cross-referencing.
|
||||
|
||||
|
||||
Other Tags
|
||||
----------
|
||||
|
||||
Except the ones given above, any other tags will be added as a part of
|
||||
a subsection. All tags are lowercase by convention.
|
||||
|
||||
|
||||
Public Header Definitions
|
||||
-------------------------
|
||||
|
||||
The public headers for FreeType have their names defined in
|
||||
`include/freetype/config/ftheader.h`. Any new public header file must
|
||||
be defined in this file, in the following format:
|
||||
|
||||
#define FT_NEWNAME_H <freetype/newname.h>
|
||||
|
||||
Where `newname` is the name of the header file.
|
||||
|
||||
This macro is combined with the file location of a sub-section and
|
||||
printed with the object.
|
||||
|
||||
|
||||
Note on code blocks captured after comments
|
||||
-------------------------------------------
|
||||
|
||||
All non-documentation lines after a documentation comment block are
|
||||
captured to be displayed as the code for the sub-section. To stop
|
||||
collection, a line with `/* */` should be added.
|
||||
|
||||
|
||||
General Formatting Conventions
|
||||
------------------------------
|
||||
|
||||
* Use two spaces after a full stop ending a sentence.
|
||||
* Use appropriate uppercasing in titles. Refer
|
||||
|
||||
https://english.stackexchange.com/a/34
|
||||
|
||||
for more information.
|
||||
* Do not add trailing parentheses when citing a C function.
|
||||
|
||||
|
||||
Markdown Usage
|
||||
--------------
|
||||
|
||||
All tags, except the ones that define the name and title for a block
|
||||
support markdown in them. Docwriter uses a markdown parser that
|
||||
follows rules given in John Gruber's markdown guide:
|
||||
|
||||
https://daringfireball.net/projects/markdown/syntax
|
||||
|
||||
with a few exceptions and extensions, detailed below. This may also
|
||||
be referred to as the **FreeType Flavored Markdown**.
|
||||
|
||||
|
||||
Headers
|
||||
-------
|
||||
|
||||
Markdown headers should not be used directly, because these are added
|
||||
based on section titles, sub-section names, and tags. However, if a
|
||||
header needs to be added, note the following correspondence to HTML tags:
|
||||
|
||||
* Section title on top of the page is `H1`.
|
||||
* Sub-section titles are `H2`.
|
||||
* Parts of sub-sections are `H4`.
|
||||
* Any header added will be visible in the Table of Contents (TOC) of
|
||||
the page.
|
||||
|
||||
|
||||
Emphasis
|
||||
--------
|
||||
|
||||
* Use `_underscores_` for italics.
|
||||
* Use `**double asterisks**` for bold.
|
||||
|
||||
Although the other notations (double underscore for bold, single
|
||||
asterisk for italics) are supported, it is recommended to use the
|
||||
above for consistency.
|
||||
|
||||
Note that there may be cases where having two asterisks or underscores
|
||||
in a line may lead to text being picked up as italics or bold.
|
||||
Although unintentional, this is correct markdown behavior.
|
||||
|
||||
For inline code, wrap the sequence with backticks (see below). This
|
||||
renders symbols correctly without modifications. If a symbol is
|
||||
absolutely required outside of an inline code block or code sequence,
|
||||
escape it with a backslash (like `\*` or `\_`).
|
||||
|
||||
|
||||
Lists
|
||||
-----
|
||||
|
||||
Unordered lists can be created with asterisks:
|
||||
|
||||
* Unordered list items can use asterisks.
|
||||
* Another list item.
|
||||
|
||||
Ordered lists start with numbers:
|
||||
|
||||
1. This is an ordered list item.
|
||||
2. Brackets after numbers won't work.
|
||||
|
||||
To continue a list over multiple paragraphs, indent them with at least
|
||||
four spaces. For example:
|
||||
|
||||
1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
||||
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
|
||||
viverra nec, fringilla in, laoreet vitae, risus.
|
||||
|
||||
Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
|
||||
Suspendisse id sem consectetuer libero luctus adipiscing.
|
||||
|
||||
2. This is the second list item.
|
||||
|
||||
This paragraph is not a part of the list.
|
||||
|
||||
More information on lists in markdown is available at
|
||||
|
||||
https://daringfireball.net/projects/markdown/syntax#list
|
||||
|
||||
|
||||
Cross-references
|
||||
----------------
|
||||
|
||||
Other sub-sections can be linked with the `@` symbol:
|
||||
|
||||
@description:
|
||||
While FreeType's CFF driver doesn't expose API functions by
|
||||
itself, it is possible to control its behaviour with
|
||||
@FT_Property_Set and @FT_Property_Get.
|
||||
|
||||
If a field in the `values` table of another sub-section is linked, the
|
||||
link leads to its parent sub-section.
|
||||
|
||||
|
||||
Links and Images
|
||||
----------------
|
||||
|
||||
All URLs are converted to links in the HTML documentation.
|
||||
|
||||
Markdown syntax for links and images are fully supported.
|
||||
|
||||
|
||||
Inline Code
|
||||
-----------
|
||||
|
||||
To indicate a span of code, wrap it with backtick quotes (`` ` ``):
|
||||
|
||||
Use the `printf()` function.
|
||||
|
||||
Cross-references, markdown, and html styling do not work in inline code
|
||||
sequences.
|
||||
|
||||
|
||||
Code and Syntax Highlighting
|
||||
----------------------------
|
||||
|
||||
Blocks of code are fenced by lines with three back-ticks `` ``` ``
|
||||
followed by the language name, if any (used for syntax highlighting),
|
||||
as demonstrated in the following example.
|
||||
|
||||
```c
|
||||
x = y + z;
|
||||
if ( zookoo == 2 )
|
||||
{
|
||||
foobar();
|
||||
}
|
||||
```
|
||||
|
||||
Note that the indentation of the opening line and the closing line
|
||||
must be exactly the same. The code sequence itself should have a
|
||||
larger indentation than the surrounding back-ticks.
|
||||
|
||||
Like inline code, markdown and html styling is *not* supported inside
|
||||
code blocks.
|
||||
|
||||
|
||||
Tables
|
||||
------
|
||||
|
||||
Tables are used to list values, input, and other fields. The FreeType
|
||||
Flavored Markdown adopts a simple approach to tables with two columns,
|
||||
or field definition tables.
|
||||
|
||||
Field definition names may contain alphanumeric, underscore, and the
|
||||
`.` characters. This is followed by `::`. The following lines are
|
||||
the second column of the table. A field definition ends with the
|
||||
start of another field definition, or a markup tag.
|
||||
|
||||
@Input:
|
||||
pathname ::
|
||||
A path to the font file.
|
||||
|
||||
face_index ::
|
||||
See @FT_Open_Face for a detailed description of this
|
||||
parameter.
|
||||
|
||||
|
||||
Non-breaking Space
|
||||
------------------
|
||||
|
||||
A tilde can be used to create a non-breaking space. The example
|
||||
|
||||
The encoding value~0 is reserved.
|
||||
|
||||
is converted to
|
||||
|
||||
The encoding value 0 is reserved.
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2018-2020 by
|
||||
Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
modified, and distributed under the terms of the FreeType project
|
||||
license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||
this file you indicate that you have read the license and understand
|
||||
and accept it fully.
|
||||
|
||||
|
||||
--- end of DOCGUIDE ---
|
|
@ -1,169 +0,0 @@
|
|||
The FreeType Project LICENSE
|
||||
----------------------------
|
||||
|
||||
2006-Jan-27
|
||||
|
||||
Copyright 1996-2002, 2006 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg
|
||||
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
The FreeType Project is distributed in several archive packages;
|
||||
some of them may contain, in addition to the FreeType font engine,
|
||||
various tools and contributions which rely on, or relate to, the
|
||||
FreeType Project.
|
||||
|
||||
This license applies to all files found in such packages, and
|
||||
which do not fall under their own explicit license. The license
|
||||
affects thus the FreeType font engine, the test programs,
|
||||
documentation and makefiles, at the very least.
|
||||
|
||||
This license was inspired by the BSD, Artistic, and IJG
|
||||
(Independent JPEG Group) licenses, which all encourage inclusion
|
||||
and use of free software in commercial and freeware products
|
||||
alike. As a consequence, its main points are that:
|
||||
|
||||
o We don't promise that this software works. However, we will be
|
||||
interested in any kind of bug reports. (`as is' distribution)
|
||||
|
||||
o You can use this software for whatever you want, in parts or
|
||||
full form, without having to pay us. (`royalty-free' usage)
|
||||
|
||||
o You may not pretend that you wrote this software. If you use
|
||||
it, or only parts of it, in a program, you must acknowledge
|
||||
somewhere in your documentation that you have used the
|
||||
FreeType code. (`credits')
|
||||
|
||||
We specifically permit and encourage the inclusion of this
|
||||
software, with or without modifications, in commercial products.
|
||||
We disclaim all warranties covering The FreeType Project and
|
||||
assume no liability related to The FreeType Project.
|
||||
|
||||
|
||||
Finally, many people asked us for a preferred form for a
|
||||
credit/disclaimer to use in compliance with this license. We thus
|
||||
encourage you to use the following text:
|
||||
|
||||
"""
|
||||
Portions of this software are copyright © <year> The FreeType
|
||||
Project (www.freetype.org). All rights reserved.
|
||||
"""
|
||||
|
||||
Please replace <year> with the value from the FreeType version you
|
||||
actually use.
|
||||
|
||||
|
||||
Legal Terms
|
||||
===========
|
||||
|
||||
0. Definitions
|
||||
--------------
|
||||
|
||||
Throughout this license, the terms `package', `FreeType Project',
|
||||
and `FreeType archive' refer to the set of files originally
|
||||
distributed by the authors (David Turner, Robert Wilhelm, and
|
||||
Werner Lemberg) as the `FreeType Project', be they named as alpha,
|
||||
beta or final release.
|
||||
|
||||
`You' refers to the licensee, or person using the project, where
|
||||
`using' is a generic term including compiling the project's source
|
||||
code as well as linking it to form a `program' or `executable'.
|
||||
This program is referred to as `a program using the FreeType
|
||||
engine'.
|
||||
|
||||
This license applies to all files distributed in the original
|
||||
FreeType Project, including all source code, binaries and
|
||||
documentation, unless otherwise stated in the file in its
|
||||
original, unmodified form as distributed in the original archive.
|
||||
If you are unsure whether or not a particular file is covered by
|
||||
this license, you must contact us to verify this.
|
||||
|
||||
The FreeType Project is copyright (C) 1996-2000 by David Turner,
|
||||
Robert Wilhelm, and Werner Lemberg. All rights reserved except as
|
||||
specified below.
|
||||
|
||||
1. No Warranty
|
||||
--------------
|
||||
|
||||
THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO
|
||||
USE, OF THE FREETYPE PROJECT.
|
||||
|
||||
2. Redistribution
|
||||
-----------------
|
||||
|
||||
This license grants a worldwide, royalty-free, perpetual and
|
||||
irrevocable right and license to use, execute, perform, compile,
|
||||
display, copy, create derivative works of, distribute and
|
||||
sublicense the FreeType Project (in both source and object code
|
||||
forms) and derivative works thereof for any purpose; and to
|
||||
authorize others to exercise some or all of the rights granted
|
||||
herein, subject to the following conditions:
|
||||
|
||||
o Redistribution of source code must retain this license file
|
||||
(`FTL.TXT') unaltered; any additions, deletions or changes to
|
||||
the original files must be clearly indicated in accompanying
|
||||
documentation. The copyright notices of the unaltered,
|
||||
original files must be preserved in all copies of source
|
||||
files.
|
||||
|
||||
o Redistribution in binary form must provide a disclaimer that
|
||||
states that the software is based in part of the work of the
|
||||
FreeType Team, in the distribution documentation. We also
|
||||
encourage you to put an URL to the FreeType web page in your
|
||||
documentation, though this isn't mandatory.
|
||||
|
||||
These conditions apply to any software derived from or based on
|
||||
the FreeType Project, not just the unmodified files. If you use
|
||||
our work, you must acknowledge us. However, no fee need be paid
|
||||
to us.
|
||||
|
||||
3. Advertising
|
||||
--------------
|
||||
|
||||
Neither the FreeType authors and contributors nor you shall use
|
||||
the name of the other for commercial, advertising, or promotional
|
||||
purposes without specific prior written permission.
|
||||
|
||||
We suggest, but do not require, that you use one or more of the
|
||||
following phrases to refer to this software in your documentation
|
||||
or advertising materials: `FreeType Project', `FreeType Engine',
|
||||
`FreeType library', or `FreeType Distribution'.
|
||||
|
||||
As you have not signed this license, you are not required to
|
||||
accept it. However, as the FreeType Project is copyrighted
|
||||
material, only this license, or another one contracted with the
|
||||
authors, grants you the right to use, distribute, and modify it.
|
||||
Therefore, by using, distributing, or modifying the FreeType
|
||||
Project, you indicate that you understand and accept all the terms
|
||||
of this license.
|
||||
|
||||
4. Contacts
|
||||
-----------
|
||||
|
||||
There are two mailing lists related to FreeType:
|
||||
|
||||
o freetype@nongnu.org
|
||||
|
||||
Discusses general use and applications of FreeType, as well as
|
||||
future and wanted additions to the library and distribution.
|
||||
If you are looking for support, start in this list if you
|
||||
haven't found anything to help you in the documentation.
|
||||
|
||||
o freetype-devel@nongnu.org
|
||||
|
||||
Discusses bugs, as well as engine internals, design issues,
|
||||
specific licenses, porting, etc.
|
||||
|
||||
Our home page can be found at
|
||||
|
||||
https://www.freetype.org
|
||||
|
||||
|
||||
--- end of FTL.TXT ---
|
|
@ -1,340 +0,0 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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 2 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, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue