ESPHome
2022.12.8
|
#include <display_buffer.h>
Public Member Functions | |
virtual void | fill (Color color) |
Fill the entire screen with the given color. More... | |
void | clear () |
Clear the entire screen by filling it with OFF pixels. More... | |
int | get_width () |
Get the width of the image in pixels with rotation applied. More... | |
int | get_height () |
Get the height of the image in pixels with rotation applied. More... | |
void | draw_pixel_at (int x, int y, Color color=COLOR_ON) |
Set a single pixel at the specified coordinates to the given color. More... | |
void | line (int x1, int y1, int x2, int y2, Color color=COLOR_ON) |
Draw a straight line from the point [x1,y1] to [x2,y2] with the given color. More... | |
void | horizontal_line (int x, int y, int width, Color color=COLOR_ON) |
Draw a horizontal line from the point [x,y] to [x+width,y] with the given color. More... | |
void | vertical_line (int x, int y, int height, Color color=COLOR_ON) |
Draw a vertical line from the point [x,y] to [x,y+width] with the given color. More... | |
void | rectangle (int x1, int y1, int width, int height, Color color=COLOR_ON) |
Draw the outline of a rectangle with the top left point at [x1,y1] and the bottom right point at [x1+width,y1+height]. More... | |
void | filled_rectangle (int x1, int y1, int width, int height, Color color=COLOR_ON) |
Fill a rectangle with the top left point at [x1,y1] and the bottom right point at [x1+width,y1+height]. More... | |
void | circle (int center_x, int center_xy, int radius, Color color=COLOR_ON) |
Draw the outline of a circle centered around [center_x,center_y] with the radius radius with the given color. More... | |
void | filled_circle (int center_x, int center_y, int radius, Color color=COLOR_ON) |
Fill a circle centered around [center_x,center_y] with the radius radius with the given color. More... | |
void | print (int x, int y, Font *font, Color color, TextAlign align, const char *text) |
Print text with the anchor point at [x,y] with font . More... | |
void | print (int x, int y, Font *font, Color color, const char *text) |
Print text with the top left at [x,y] with font . More... | |
void | print (int x, int y, Font *font, TextAlign align, const char *text) |
Print text with the anchor point at [x,y] with font . More... | |
void | print (int x, int y, Font *font, const char *text) |
Print text with the top left at [x,y] with font . More... | |
void | printf (int x, int y, Font *font, Color color, TextAlign align, const char *format,...) __attribute__((format(printf |
Evaluate the printf-format format and print the result with the anchor point at [x,y] with font . More... | |
void void | printf (int x, int y, Font *font, Color color, const char *format,...) __attribute__((format(printf |
Evaluate the printf-format format and print the result with the top left at [x,y] with font . More... | |
void void void | printf (int x, int y, Font *font, TextAlign align, const char *format,...) __attribute__((format(printf |
Evaluate the printf-format format and print the result with the anchor point at [x,y] with font . More... | |
void void void void | printf (int x, int y, Font *font, const char *format,...) __attribute__((format(printf |
Evaluate the printf-format format and print the result with the top left at [x,y] with font . More... | |
void void void void void | strftime (int x, int y, Font *font, Color color, TextAlign align, const char *format, time::ESPTime time) __attribute__((format(strftime |
Evaluate the strftime-format format and print the result with the anchor point at [x,y] with font . More... | |
void void void void void void | strftime (int x, int y, Font *font, Color color, const char *format, time::ESPTime time) __attribute__((format(strftime |
Evaluate the strftime-format format and print the result with the top left at [x,y] with font . More... | |
void void void void void void void | strftime (int x, int y, Font *font, TextAlign align, const char *format, time::ESPTime time) __attribute__((format(strftime |
Evaluate the strftime-format format and print the result with the anchor point at [x,y] with font . More... | |
void void void void void void void void | strftime (int x, int y, Font *font, const char *format, time::ESPTime time) __attribute__((format(strftime |
Evaluate the strftime-format format and print the result with the top left at [x,y] with font . More... | |
void void void void void void void void void | image (int x, int y, Image *image, Color color_on=COLOR_ON, Color color_off=COLOR_OFF) |
Draw the image with the top-left corner at [x,y] to the screen. More... | |
void | graph (int x, int y, graph::Graph *graph, Color color_on=COLOR_ON) |
Draw the graph with the top-left corner at [x,y] to the screen. More... | |
void | legend (int x, int y, graph::Graph *graph, Color color_on=COLOR_ON) |
Draw the legend for graph with the top-left corner at [x,y] to the screen. More... | |
void | qr_code (int x, int y, qr_code::QrCode *qr_code, Color color_on=COLOR_ON, int scale=1) |
Draw the qr_code with the top-left corner at [x,y] to the screen. More... | |
void | get_text_bounds (int x, int y, const char *text, Font *font, TextAlign align, int *x1, int *y1, int *width, int *height) |
Get the text bounds of the given string. More... | |
void | set_writer (display_writer_t &&writer) |
Internal method to set the display writer lambda. More... | |
void | show_page (DisplayPage *page) |
void | show_next_page () |
void | show_prev_page () |
void | set_pages (std::vector< DisplayPage *> pages) |
const DisplayPage * | get_active_page () const |
void | add_on_page_change_trigger (DisplayOnPageChangeTrigger *t) |
void | set_rotation (DisplayRotation rotation) |
Internal method to set the display rotation with. More... | |
void | set_auto_clear (bool auto_clear_enabled) |
virtual int | get_height_internal ()=0 |
virtual int | get_width_internal ()=0 |
DisplayRotation | get_rotation () const |
virtual DisplayType | get_display_type ()=0 |
Get the type of display that the buffer corresponds to. More... | |
Protected Member Functions | |
void | vprintf_ (int x, int y, Font *font, Color color, TextAlign align, const char *format, va_list arg) |
virtual void | draw_absolute_pixel_internal (int x, int y, Color color)=0 |
void | init_internal_ (uint32_t buffer_length) |
void | do_update_ () |
Protected Attributes | |
uint8_t * | buffer_ {nullptr} |
DisplayRotation | rotation_ {DISPLAY_ROTATION_0_DEGREES} |
optional< display_writer_t > | writer_ {} |
DisplayPage * | page_ {nullptr} |
DisplayPage * | previous_page_ {nullptr} |
std::vector< DisplayOnPageChangeTrigger * > | on_page_change_triggers_ |
bool | auto_clear_enabled_ {true} |
Definition at line 118 of file display_buffer.h.
|
inline |
Definition at line 360 of file display_buffer.h.
void HOT esphome::display::DisplayBuffer::circle | ( | int | center_x, |
int | center_xy, | ||
int | radius, | ||
Color | color = COLOR_ON |
||
) |
Draw the outline of a circle centered around [center_x,center_y] with the radius radius with the given color.
Definition at line 114 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::clear | ( | ) |
Clear the entire screen by filling it with OFF pixels.
Definition at line 28 of file display_buffer.cpp.
|
protected |
Definition at line 362 of file display_buffer.cpp.
|
protectedpure virtual |
Implemented in esphome::st7789v::ST7789V, esphome::inkplate6::Inkplate6, esphome::st7735::ST7735, esphome::ili9341::ILI9341Display, esphome::ssd1306_base::SSD1306, esphome::pcd8544::PCD8544, esphome::max7219digit::MAX7219Component, esphome::addressable_light::AddressableLightDisplay, esphome::ssd1325_base::SSD1325, esphome::ssd1351_base::SSD1351, esphome::waveshare_epaper::WaveshareEPaper, esphome::ssd1322_base::SSD1322, esphome::ssd1327_base::SSD1327, esphome::ssd1331_base::SSD1331, and esphome::st7920::ST7920.
Set a single pixel at the specified coordinates to the given color.
Definition at line 52 of file display_buffer.cpp.
|
virtual |
Fill the entire screen with the given color.
Reimplemented in esphome::inkplate6::Inkplate6, esphome::ssd1306_base::SSD1306, esphome::pcd8544::PCD8544, esphome::ili9341::ILI9341Display, esphome::ssd1325_base::SSD1325, esphome::ssd1351_base::SSD1351, esphome::ssd1322_base::SSD1322, esphome::ssd1327_base::SSD1327, esphome::waveshare_epaper::WaveshareEPaper, esphome::st7920::ST7920, and esphome::ssd1331_base::SSD1331.
Definition at line 27 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::filled_circle | ( | int | center_x, |
int | center_y, | ||
int | radius, | ||
Color | color = COLOR_ON |
||
) |
Fill a circle centered around [center_x,center_y] with the radius radius with the given color.
Definition at line 137 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::filled_rectangle | ( | int | x1, |
int | y1, | ||
int | width, | ||
int | height, | ||
Color | color = COLOR_ON |
||
) |
Fill a rectangle with the top left point at [x1,y1] and the bottom right point at [x1+width,y1+height].
Definition at line 108 of file display_buffer.cpp.
|
inline |
Definition at line 358 of file display_buffer.h.
|
pure virtual |
Get the type of display that the buffer corresponds to.
In case of dynamically configurable displays, returns the type the display is currently configured to.
Implemented in esphome::st7789v::ST7789V, esphome::max7219digit::MAX7219Component, esphome::inkplate6::Inkplate6, esphome::ili9341::ILI9341Display, esphome::st7735::ST7735, esphome::pcd8544::PCD8544, esphome::ssd1306_base::SSD1306, esphome::addressable_light::AddressableLightDisplay, esphome::waveshare_epaper::WaveshareEPaper, esphome::ssd1325_base::SSD1325, esphome::ssd1351_base::SSD1351, esphome::ssd1322_base::SSD1322, esphome::ssd1327_base::SSD1327, esphome::st7920::ST7920, and esphome::ssd1331_base::SSD1331.
int esphome::display::DisplayBuffer::get_height | ( | ) |
Get the height of the image in pixels with rotation applied.
Definition at line 40 of file display_buffer.cpp.
|
pure virtual |
Implemented in esphome::waveshare_epaper::WaveshareEPaper2P13InDKE, esphome::waveshare_epaper::WaveshareEPaper7P5InHDB, esphome::waveshare_epaper::WaveshareEPaper7P5InV2, esphome::waveshare_epaper::WaveshareEPaper7P5InBC, esphome::waveshare_epaper::WaveshareEPaper7P5InBV2, esphome::waveshare_epaper::WaveshareEPaper7P5In, esphome::waveshare_epaper::WaveshareEPaper5P8In, esphome::waveshare_epaper::WaveshareEPaper4P2InBV2, esphome::waveshare_epaper::WaveshareEPaper4P2In, esphome::waveshare_epaper::WaveshareEPaper2P9InB, esphome::st7789v::ST7789V, esphome::waveshare_epaper::WaveshareEPaper2P7In, esphome::inkplate6::Inkplate6, esphome::waveshare_epaper::WaveshareEPaperTypeA, esphome::ili9341::ILI9341Display, esphome::st7735::ST7735, esphome::pcd8544::PCD8544, esphome::ssd1306_base::SSD1306, esphome::max7219digit::MAX7219Component, esphome::addressable_light::AddressableLightDisplay, esphome::ssd1325_base::SSD1325, esphome::ssd1351_base::SSD1351, esphome::ssd1322_base::SSD1322, esphome::ssd1327_base::SSD1327, esphome::ssd1331_base::SSD1331, and esphome::st7920::ST7920.
|
inline |
Definition at line 370 of file display_buffer.h.
void esphome::display::DisplayBuffer::get_text_bounds | ( | int | x, |
int | y, | ||
const char * | text, | ||
Font * | font, | ||
TextAlign | align, | ||
int * | x1, | ||
int * | y1, | ||
int * | width, | ||
int * | height | ||
) |
Get the text bounds of the given string.
x | The x coordinate to place the string at, can be 0 if only interested in dimensions. |
y | The y coordinate to place the string at, can be 0 if only interested in dimensions. |
text | The text to measure. |
font | The font to measure the text bounds with. |
align | The alignment of the text. Set to TextAlign::TOP_LEFT if only interested in dimensions. |
x1 | A pointer to store the returned x coordinate of the upper left corner in. |
y1 | A pointer to store the returned y coordinate of the upper left corner in. |
width | A pointer to store the returned text width in. |
height | A pointer to store the returned text height in. |
Definition at line 268 of file display_buffer.cpp.
int esphome::display::DisplayBuffer::get_width | ( | ) |
Get the width of the image in pixels with rotation applied.
Definition at line 29 of file display_buffer.cpp.
|
pure virtual |
Implemented in esphome::waveshare_epaper::WaveshareEPaper2P13InDKE, esphome::waveshare_epaper::WaveshareEPaper7P5InHDB, esphome::waveshare_epaper::WaveshareEPaper7P5InV2, esphome::waveshare_epaper::WaveshareEPaper7P5InBC, esphome::waveshare_epaper::WaveshareEPaper7P5InBV2, esphome::waveshare_epaper::WaveshareEPaper7P5In, esphome::waveshare_epaper::WaveshareEPaper5P8In, esphome::waveshare_epaper::WaveshareEPaper4P2InBV2, esphome::waveshare_epaper::WaveshareEPaper4P2In, esphome::waveshare_epaper::WaveshareEPaper2P9InB, esphome::st7789v::ST7789V, esphome::waveshare_epaper::WaveshareEPaper2P7In, esphome::inkplate6::Inkplate6, esphome::waveshare_epaper::WaveshareEPaperTypeA, esphome::ili9341::ILI9341Display, esphome::st7735::ST7735, esphome::pcd8544::PCD8544, esphome::ssd1306_base::SSD1306, esphome::max7219digit::MAX7219Component, esphome::addressable_light::AddressableLightDisplay, esphome::ssd1325_base::SSD1325, esphome::ssd1351_base::SSD1351, esphome::ssd1322_base::SSD1322, esphome::ssd1327_base::SSD1327, esphome::ssd1331_base::SSD1331, and esphome::st7920::ST7920.
void esphome::display::DisplayBuffer::graph | ( | int | x, |
int | y, | ||
graph::Graph * | graph, | ||
Color | color_on = COLOR_ON |
||
) |
Draw the graph
with the top-left corner at [x,y] to the screen.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
graph | The graph id to draw |
color_on | The color to replace in binary images for the on bits. |
Definition at line 256 of file display_buffer.cpp.
void HOT esphome::display::DisplayBuffer::horizontal_line | ( | int | x, |
int | y, | ||
int | width, | ||
Color | color = COLOR_ON |
||
) |
Draw a horizontal line from the point [x,y] to [x+width,y] with the given color.
Definition at line 92 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::image | ( | int | x, |
int | y, | ||
Image * | image, | ||
Color | color_on = COLOR_ON , |
||
Color | color_off = COLOR_OFF |
||
) |
Draw the image
with the top-left corner at [x,y] to the screen.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
image | The image to draw |
color_on | The color to replace in binary images for the on bits. |
color_off | The color to replace in binary images for the off bits. |
Definition at line 214 of file display_buffer.cpp.
|
protected |
Definition at line 18 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::legend | ( | int | x, |
int | y, | ||
graph::Graph * | graph, | ||
Color | color_on = COLOR_ON |
||
) |
Draw the legend
for graph with the top-left corner at [x,y] to the screen.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
graph | The graph id for which the legend applies to |
graph | The graph id for which the legend applies to |
graph | The graph id for which the legend applies to |
name_font | The font used for the trace name |
value_font | The font used for the trace value and units |
color_on | The color of the border |
Definition at line 257 of file display_buffer.cpp.
void HOT esphome::display::DisplayBuffer::line | ( | int | x1, |
int | y1, | ||
int | x2, | ||
int | y2, | ||
Color | color = COLOR_ON |
||
) |
Draw a straight line from the point [x1,y1] to [x2,y2] with the given color.
Definition at line 72 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::print | ( | int | x, |
int | y, | ||
Font * | font, | ||
Color | color, | ||
TextAlign | align, | ||
const char * | text | ||
) |
Print text
with the anchor point at [x,y] with font
.
x | The x coordinate of the text alignment anchor point. |
y | The y coordinate of the text alignment anchor point. |
font | The font to draw the text with. |
color | The color to draw the text with. |
align | The alignment of the text. |
text | The text to draw. |
Definition at line 164 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::print | ( | int | x, |
int | y, | ||
Font * | font, | ||
Color | color, | ||
const char * | text | ||
) |
Print text
with the top left at [x,y] with font
.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
font | The font to draw the text with. |
color | The color to draw the text with. |
text | The text to draw. |
Definition at line 306 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::print | ( | int | x, |
int | y, | ||
Font * | font, | ||
TextAlign | align, | ||
const char * | text | ||
) |
Print text
with the anchor point at [x,y] with font
.
x | The x coordinate of the text alignment anchor point. |
y | The y coordinate of the text alignment anchor point. |
font | The font to draw the text with. |
align | The alignment of the text. |
text | The text to draw. |
Definition at line 309 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::print | ( | int | x, |
int | y, | ||
Font * | font, | ||
const char * | text | ||
) |
Print text
with the top left at [x,y] with font
.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
font | The font to draw the text with. |
text | The text to draw. |
Definition at line 312 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::printf | ( | int | x, |
int | y, | ||
Font * | font, | ||
Color | color, | ||
TextAlign | align, | ||
const char * | format, | ||
... | |||
) |
Evaluate the printf-format format
and print the result with the anchor point at [x,y] with font
.
x | The x coordinate of the text alignment anchor point. |
y | The y coordinate of the text alignment anchor point. |
font | The font to draw the text with. |
color | The color to draw the text with. |
align | The alignment of the text. |
format | The format to use. |
... | The arguments to use for the text formatting. |
Definition at line 315 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::printf | ( | int | x, |
int | y, | ||
Font * | font, | ||
Color | color, | ||
const char * | format, | ||
... | |||
) |
Evaluate the printf-format format
and print the result with the top left at [x,y] with font
.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
font | The font to draw the text with. |
color | The color to draw the text with. |
format | The format to use. |
... | The arguments to use for the text formatting. |
Definition at line 321 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::printf | ( | int | x, |
int | y, | ||
Font * | font, | ||
TextAlign | align, | ||
const char * | format, | ||
... | |||
) |
Evaluate the printf-format format
and print the result with the anchor point at [x,y] with font
.
x | The x coordinate of the text alignment anchor point. |
y | The y coordinate of the text alignment anchor point. |
font | The font to draw the text with. |
align | The alignment of the text. |
format | The format to use. |
... | The arguments to use for the text formatting. |
Definition at line 327 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::printf | ( | int | x, |
int | y, | ||
Font * | font, | ||
const char * | format, | ||
... | |||
) |
Evaluate the printf-format format
and print the result with the top left at [x,y] with font
.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
font | The font to draw the text with. |
format | The format to use. |
... | The arguments to use for the text formatting. |
Definition at line 333 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::qr_code | ( | int | x, |
int | y, | ||
qr_code::QrCode * | qr_code, | ||
Color | color_on = COLOR_ON , |
||
int | scale = 1 |
||
) |
Draw the qr_code
with the top-left corner at [x,y] to the screen.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
qr_code | The qr_code to draw |
color_on | The color to replace in binary images for the on bits. |
Definition at line 263 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::rectangle | ( | int | x1, |
int | y1, | ||
int | width, | ||
int | height, | ||
Color | color = COLOR_ON |
||
) |
Draw the outline of a rectangle with the top left point at [x1,y1] and the bottom right point at [x1+width,y1+height].
Definition at line 102 of file display_buffer.cpp.
|
inline |
Definition at line 366 of file display_buffer.h.
void esphome::display::DisplayBuffer::set_pages | ( | std::vector< DisplayPage *> | pages | ) |
Definition at line 340 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::set_rotation | ( | DisplayRotation | rotation | ) |
Internal method to set the display rotation with.
Definition at line 51 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::set_writer | ( | display_writer_t && | writer | ) |
Internal method to set the display writer lambda.
Definition at line 339 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::show_next_page | ( | ) |
Definition at line 360 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::show_page | ( | DisplayPage * | page | ) |
Definition at line 352 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::show_prev_page | ( | ) |
Definition at line 361 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::strftime | ( | int | x, |
int | y, | ||
Font * | font, | ||
Color | color, | ||
TextAlign | align, | ||
const char * | format, | ||
time::ESPTime | time | ||
) |
Evaluate the strftime-format format
and print the result with the anchor point at [x,y] with font
.
x | The x coordinate of the text alignment anchor point. |
y | The y coordinate of the text alignment anchor point. |
font | The font to draw the text with. |
color | The color to draw the text with. |
align | The alignment of the text. |
format | The strftime format to use. |
time | The time to format. |
Definition at line 377 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::strftime | ( | int | x, |
int | y, | ||
Font * | font, | ||
Color | color, | ||
const char * | format, | ||
time::ESPTime | time | ||
) |
Evaluate the strftime-format format
and print the result with the top left at [x,y] with font
.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
font | The font to draw the text with. |
color | The color to draw the text with. |
format | The strftime format to use. |
time | The time to format. |
Definition at line 384 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::strftime | ( | int | x, |
int | y, | ||
Font * | font, | ||
TextAlign | align, | ||
const char * | format, | ||
time::ESPTime | time | ||
) |
Evaluate the strftime-format format
and print the result with the anchor point at [x,y] with font
.
x | The x coordinate of the text alignment anchor point. |
y | The y coordinate of the text alignment anchor point. |
font | The font to draw the text with. |
align | The alignment of the text. |
format | The strftime format to use. |
time | The time to format. |
Definition at line 387 of file display_buffer.cpp.
void esphome::display::DisplayBuffer::strftime | ( | int | x, |
int | y, | ||
Font * | font, | ||
const char * | format, | ||
time::ESPTime | time | ||
) |
Evaluate the strftime-format format
and print the result with the top left at [x,y] with font
.
x | The x coordinate of the upper left corner. |
y | The y coordinate of the upper left corner. |
font | The font to draw the text with. |
format | The strftime format to use. |
time | The time to format. |
Definition at line 390 of file display_buffer.cpp.
void HOT esphome::display::DisplayBuffer::vertical_line | ( | int | x, |
int | y, | ||
int | height, | ||
Color | color = COLOR_ON |
||
) |
Draw a vertical line from the point [x,y] to [x,y+width] with the given color.
Definition at line 97 of file display_buffer.cpp.
|
protected |
Definition at line 207 of file display_buffer.cpp.
|
protected |
Definition at line 392 of file display_buffer.h.
|
protected |
Definition at line 386 of file display_buffer.h.
|
protected |
Definition at line 391 of file display_buffer.h.
|
protected |
Definition at line 389 of file display_buffer.h.
|
protected |
Definition at line 390 of file display_buffer.h.
|
protected |
Definition at line 387 of file display_buffer.h.
|
protected |
Definition at line 388 of file display_buffer.h.