Обзор Графической библиотеки Microchip Graphics Library

77
© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 1 Обзор Графической библиотеки Microchip Graphics Library

Transcript of Обзор Графической библиотеки Microchip Graphics Library

Page 1: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 1

ОбзорГрафической библиотекиMicrochip Graphics Library

Page 2: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 2

Терминологияl Application Programming Interface (API): Набор функций, которые могут быть вызваны из Вашей программы дляполучения доступа к другой программе или библиотеки.

l Графические примитивы: графический элемент, такойкак точка, линия, окружность и т.п. из которых можносоздать более сложные Графические Объекты

l Графические объекты: любые из различныхграфических форм, которые можно использовать вкачестве элементов управления (кнопки, графики, слайдеры и т.п.). Эти объекты можно использовать дляполучения сообщения от пользователя системы.

l Виджет: другое имя Графического Объекта.l Глиф, символ: графическое представление в том илиином шрифте всех отдельных символов письма (букв, иероглифов, цифр, знаков пунктуации и т.п.)

Page 3: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 3

Графическая библиотека

СтатичныйСтатичный тексттекст

кнопкикнопки

КартинкаКартинка

Ключевые моменты:l Работает с 16- и 32-х битными контроллерами

Microchipl Модульная структура – Подключайте только

то, что Вам нужноl Не зависит от размера экрана и разрешенияl Низкие требования по памяти и

производительностиl Средства разработки и отладки

FREE

РазноязычныеРазноязычные шрифтышрифты

Page 4: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 4

Структура библиотеки

Graphics Display

Draw Function 1(i.e. 3D Button)

Draw Function 2(i.e. Progress Bar)

Draw Function N

Application Layer

Message Interface

Device Driver Layer

Graphics Primitive Functions(Non-accelerated Line, Circle, Bar, OutText, etc.)

Graphics Primitives Layer

Graphics Objects Layer

Основныемодули

Низкоуровневыефункции

Прикладнаяпрограмма

……

FREEFREE

Key Pad Touch ScreenSide Button

Display Device Driver(i.e. PutPixel, GetPixel)

Graphical Accelerator(Optional)

Page 5: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 5

Настройка библиотеки#defines в GraphicsConfig.h

l Выбрать методы управленияl Сенсорный дисплей или клавиатура

l Выберете используемые заготовкиl кнопки, checkbox, слайдер, и т.п.

l Вкл/Выкл фокусировку объектовl Графический режим

l монохромныйl Ориентация экранаl Поддержка UNICODE

l Выберете место расположения шрифтов икартинокl Внутренняя Flash, внешняя память или оба

Page 6: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 6

СозданиеДрайвера для дисплея

Page 7: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 7

Основные задачидрайвера дисплея

l Инициализация дисплея (ResetDevice())l Перевод координат x,y в адрес буферафрейма

l Запись информации о цвете (яркости) по этому адресу (PutPixel(…))

l Инициализация и управления доп. функциями дисплеяl Timing controllerl Аппаратного акселератора

Page 8: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 8

Низкоуровневый драйвер

l Нам нужно знатьl Интерфейс с МК

l если RGB шина, нужно использовать микросхемуграфического контроллера

l Интерфейс типа I80 или M68 – используйте ПараллельныйМастер Порт (Parallel Master Port -- PMP)

l Так же встречается SPIl Получите код инициализации от производителяиндикатораl Лучше качество изображения

Page 9: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 9

Display Device Driver Layer

Page 10: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 10

Структура директории библиотеки

[MyDriver].cПоместите тут

Page 11: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 11

Структура директории библиотеки

[MyDriver].hПоместите тут

Page 12: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 12

Уровень примитивовГрафической библиотеки Microchip

Page 13: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 13

Уровень примитивов

l Общается напрямую с драйверомl Compile time options in GraphicsConfig.h:

l Выбор драйвераl Расположение шрифтов (внутр. память, внешняяили обе)

l Расположение картинок (внутр. память, внешняяили обе)

l Поддержка Юникода (AN1182)l Должны быть включены в проект:

l primitive.cl primitive.h

Page 14: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 14

Функции уровня примитивов

l Функции установки:l InitGraph() – инициализация дисплеяl ClearDevice()

lОчищает экран установленным цветомl Устанавливает курсор в позицию (0,0)

Page 15: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 15

Функции уровня примитивовСвойства рисования

l Влияют на свойства примитивов доследующего Setl SetColor(COLOR)

lмакрос COLOR расположен в driver.hl SetFont(&fontimage)

l &fontimage – указатель на структуру шрифтаl SetLineType(key)

l SOLID_LINEl DOTTED_LINEl DASHED_LINE

l SetLineThickness(key)l NORMAL_LINEl THICK_LINE

Page 16: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 16

SetColor()Создание нового цвета

l Используйте макрос RGB565Convert(R,G,B)l Бесплатная утилита на www.colorschemer.com

l Пример: l Установите цвет фона BLACKl Установите цвет точки WHITEint main(void){…SetColor(BLACK);ClearDisplay();SetColor(WHITE);…}

Now we have whiteobjects on a black screen

Page 17: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 17

int main(void){….SetColor(BRIGHTRED);SetLineType(SOLID_LINE);SetLineThickness(THICK_LINE);Line(x1, y1, x2, y2);Bar(left, top, right,bottom);SetColor(BLACK);SetLineType(DOTTED_LINE);Rectangle(left, top, right,bottom);…}

(x1, y1)

(x2, y2)

(left, top)

(right, bottom)(left, top)

(right, bottom)

Функции уровня примитивов

Page 18: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 18

(x1, y1)

(r)

(x1, y1)

(r)

x1, y1, r1

x2, y2, r1

Функции уровня примитивовint main(void){….SetColor(BRIGHTBLUE);SetLineType(SOLID_LINE);SetLineThickness(NORMAL_LINE);Circle(x1, y1, r);SetColor(BRIGHTGREEN);FillCircle(x1, y1, r);SetLineThickness(THICK_LINE);Bevel(x1, y1, x2, y2, r1);….}

Page 19: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 19

Функции уровня примитивовx1,y1, r1

x2,y2, r1

(xT, yT)Octant = 0xC3

1

234

5

07

6 r1r2

(xB, yB)

int main(void){….SetColor(BRIGHTBLUE);SetLineType(SOLID_LINE);SetLineThickness(NORMAL_LINE);FillBevel(x1,y1,x2,y2,r1);SetColor(BRIGHTRED);Arc(xT,yT,xB,yB,r1,r2,Octant);….}

Page 20: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 20

Уровень примитивовШрифты

Page 21: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 21

Шрифты

l Библиотека поддерживает…l True Type и Open Type шрифтыl Растровые шрифты

l Изображения шрифтов …l Могут храниться в Памяти программ или внешнейпамяти

l Доступно создание «фильтрованных» шрифтовl Поддержка юникода

l AN1182 -- Fonts in the Microchip Graphics Library

ШрифтШрифт этоэто файлфайл, , содержащийсодержащий наборнабор символовсимволов, , буквбукв, , цифрцифр, , ии ..тт..пп.. ШрифтыШрифты создаютсясоздаются вв редакторередакторешрифтовшрифтов ии часточасто связанысвязаны сс работойработой дизайнеровдизайнеров. . ГотовыеГотовые шрифтышрифты доступныдоступны изиз многихмногих источниковисточников, , ноно могутмогут требоватьтребовать лицензированиялицензирования..

Определение:

Page 22: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 22

Использование шрифтов

l Преобразователь шрифтов и картинокl Бесплатная утилита, содержится в библиотекеl Преобразует в формат, понятный библиотеке

Как запустить:Start ► Programs ► Microchip ► Graphics Library v1.75 ►Bitmap and Font converter

Page 23: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 23

Фильтр для Шрифта

l Используется чтобы уменьшить память занимаемуюшрифтомl Глифам назначаются новые кодыl Требуется создать текстовый файл фильтра (font filter file)l Все сгенерированные файлы должны быть добавлены впроект

Font Filter(Text File)

Font File

FontConverter

CHeader File

(*.h)

Font Table(C, Hex, orBinary File)

Page 24: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 24

Формат Файла Фильтраl Редактор должен поддерживать16-bit

unicode форматl Каждая линия должна иметь 3 секции:l <String Label>:<String>//<comments>

l “//” разделитель необходимl Комментарии необязательны

l После редактирования строк шрифтдолжен быть сгенерирован зановоl Теряется возможность адресовать каждуюбукву используя UNICODE или ASCII.

l App Note 1182 посвящена этой теме

Page 25: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 25

Использование шрифтоввнутренняя память

Добавьтефайл в проект

Page 26: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 26

Использование Шрифта

extern const char L11298[] __attribute__((aligned(2)));//NAME CAN BE CHANGED HERE.const struct{short mem; const char* ptr;} internalfont ={0,L11298};const char L11298[] __attribute__((aligned(2))) ={0x00,0x00,0x20,0x00,0x7F,0x00,0x00,0x23,0x00,0x06,0x88,0x01,0x00,0x08,0xAB,0x01,0x00,0x0C,0xCE,0x01,0x00,0x0E,0x14,0x02,0x00,…

l Main.c – объявите изображения шрифтовl Имя должно совпадать с использованным при его создании

l NewFont.c – измените имя в файле шрифта

MyNewFont

/////////////////// FONTS AND BITMAPS ///////////////////////// This font is located in internal flashextern const FONT_FLASH MyNewFont;

// This font must be stored in external flash memory installed on// Graphics PICTail Plus boardextern FONT_EXTERNAL externalfont;

MyNewFont;

externalfont;

ИЛИ

Page 27: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 27

Использование Шрифта

Hello World!

x1,y1

HowAre

You?

x2,y2

int main(void){extern const FONT_FLASH myFont;XCHAR myString1[]=“Hello World!”;XCHAR myString2[]=“How are you?”;….SetFont((void*)&myFont);SetColor(BLUE);MoveTo(x1,y1); //move cursorOutText(myString1);SetColor(BRIGHTRED);SetFontOrientation(ORIENT_VER);OutTextXY(x2, y2, myString2);….}

Page 28: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 28

Microchip GraphicsУровень примитивов – Изображения

и Иконки

Page 29: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 29

ИзображенияDefinitionБитмарБитмар этоэто точечноеточечное представлениепредставление графическогографическогоизображенияизображения вв памятипамяти. . ЗначениеЗначение каждойкаждой точкиточкихранитьсяхраниться вв одномодном илиили несколькихнескольких битахбитах каккакопределеноопределено глубинойглубиной цветацвета илиили bppbpp (bits per pixel).(bits per pixel).

1 bpp 4 bpp 8 bpp 16 bpp

Определение:

Page 30: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 30

Преобразование изображений

1) Выберите файлизображения “Add Images” ( только.bmp формат)

2) И нажмите“Convert”

3) Для хранения вовнешней памяти, сохраните в .hexфайле

4) Для внутреннейпамяти, сохранитев .c файле

Page 31: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 31

Использование изображений(внутренняя память)

Добавьтеполученныефайлы кпроекту

Page 32: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 32

extern const char L11298[] __attribute__((aligned(2)));//NAME CAN BE CHANGED HERE.const struct{short mem; const char* ptr;} mchpLogo ={0,L11298};const char L11298[] __attribute__((aligned(2))) ={0x00,0x00,0x20,0x00,0x7F,0x00,0x00,0x23,0x00,0x06,0x88,0x01,0x00,0x08,0xAB,0x01,0x00,0x0C,0xCE,0x01,0x00,0x0E,0x14,0x02,0x00,…

Использование Изображений

/////////////////// FONTS AND BITMAPS ///////////////////////// This font is located in internal flashextern const BITMAP_FLASH mchpLogo;

// This font must be stored in external flash memory installed on// Graphics PICTail Plus board extern BITMAP_EXTERNAL externalfont;

mchpLogo;

external_bitmap;

l Main.c – объявите ссылки на изображениеl Имя должно совпадать с использованным при создании

l NewIntro.c – измените имя в файле изображения

ИЛИ

mchpLogo =

Page 33: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 33

Использование изображения

Предопределены следующиекоэффициенты масштаба:IMAGE_NORMALIMAGE_X2

int main(void){extern const BITMAP_FLASH image1;BYTE stretch = IMAGE_NORMAL;….X = GetMaxX()-GetImageWidth((void*)&image1);Y = GetMaxY()-GetImageHeight((void*)&image1);

//put bitmap in the centerPutImage((X >>1),(Y >> 1), &image1, stretch);….}

Page 34: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 34

В Лабораторной Работе № 1 вынаучитесь

Создавать Экран-Заставку(применять картинки, шрифты, базовые фигуры)

Создавать Экран-Заставку(применять картинки, шрифты, базовые фигуры)

Page 35: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 35

Вы научитесь создавать вот такуюзаставку

Лабораторная работа 1Создание Экрана-Заставки

mchpLogo.bmp

Текст с выбраннымшрифтом

ПрямоугольникиОкружность

Page 36: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 36

Microchip Graphics Создание виджетов (элементов

управления)

Page 37: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 37

Примеры библиотечных элементовуправления

Picture

Meter

Chart

List Box

Buttons

CheckboxScroll Bar

Page 38: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 38

Создание виджетов

l Каждый виджет имеет свою Create функциюl OBJ = сокращенное имя виджета

l Описано в файле помощиl Например: BtnCreate(,,,) создает кнопкуl Например: PbCreate(,,,) создает progress bar

l Можно создать несколько объектов одноготипа

ObjCreateObjCreate(,,)(,,) этоэто функцияфункция используемаяиспользуемая библиотекойбиблиотекой чтобычтобысоздатьсоздать виджетвиджет сс определеннымиопределенными параметрамипараметрами.. ЭтаЭта функцияфункцияавтоматическиавтоматически заполняетзаполняет структуруструктуру длядля негонего ии добавляетдобавляетвиджетвиджет вв глобальныйглобальный связанныйсвязанный списоксписок используемыхиспользуемыхвиджетоввиджетов. . ВозвращаетВозвращает указательуказатель нана созданныйсозданный обектобект..

Определение:

Page 39: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 39

ID_OBJN

ID_OBJ1

ID_OBJ2

ID_OBJ3

Создание виджетов

l ObjCreate(,,,)l Заполняет структуруобъекта

lДобавляет к хвостусписка

l Требуется Heap

Связанный список

Page 40: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 40

В коде приложения …l Пример: void CreateButtons(void){…

#define ID_BTN2 16……BtnCreate( ID_BTN2, // 2nd Button ID

x3, y3, // left, topx4, y4, // right, bottomRadius, // Rounded edgesBTN_DRAW, // Display button&arrow, // use this bitmapNULL, // no textaltScheme); // style scheme

…}

Page 41: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 41

Создание ВиджетовОбщие параметры

l IDl Уникальный номер используемый для ссылок наобъект

l Положениеl Top, left, bottom, right задают положение

l Биты состоянияl Используются чтобы управлять виджетом

l Стильl Определяет вид объекта

Page 42: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 42

Microchip Graphics Стили для виджетов

Page 43: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 43

Стили для виджетовDefinitionСтильСтиль этоэто структураструктура используемаяиспользуемая библиотекойбиблиотекой чтобычтобы задатьзадатьвидвид объектаобъекта назначивназначив цветацвета ии шрифтшрифт..

Определение:

l Несколько стилей могут быть созданыодновременно

l Стиль по умолчанию задан в GOL.hl GOLCreateScheme()

l Создает новый стильl Возвращает указатель на стиль

l Структура содержит 10 членовl Значения по умолчанию назначаются при созданииl Могут быть изменены напрямуюl Каждый виджет использует стиль по своему

Page 44: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 44

Структура стиляПример для кнопки

Button

Button

Button

int main(void){…GOL_SCHEME *altScheme;altScheme = GOLCreateScheme();…altScheme -> EmbossDkColor = DKBLUE;altScheme -> EmbossLtColor = BLUE;altScheme -> TextColor0 = WHITE;altScheme -> TextColor1 = YELLOW;altScheme -> TextColorDisabled = GREY;altScheme -> Color0 = BRIGHTBLUE;altScheme -> Color1 = LTBLUE;altScheme -> ColorDisabled = LTTAN;altScheme -> CommonBkColor = TAN;altScheme -> pFont = GOLFontDefault;…}

Page 45: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 45

Microchip Graphics Рисование виджетов

Page 46: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 46

Рисование виджетов

l GOLDraw()l Нет входных параметровl Просматривает связанныйсписок

l Проверяет биты состоянияl Если бит прорисовкиустановлен то выводит наэкран

l Возвращает TRUE когда всевиджеты прорисованны

ID_OBJ1 -> биты состояния

ID_OBJ2 -> биты состояния

ID_OBJ3 -> биты сосояния

ID_OBJN -> биты состояния

Связанный список

Page 47: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 47

state общие поляl Биты состояния для рисования:

l 6 старших бита показывают что объект…l Невидимl Должен быть перерисован частичноl Полностью перерисован

l Используются всеми виджетами:l OBJ_HIDE

l Закрашивает область виджета CommonBkGnd цветомl OBJ_DRAW

l Перерисовывает виджет целикомl Очищается автоматически менеджером рисованияGOLDraw()

l OBJ_DRAW_FOCUS: l Перерисовывает только фокус

Page 48: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 48

l Биты состояния определяющие свойства: l 10 младших битовl Определяют реакцию на сообщения и видl Не изменяются автоматически GOLDraw()

l Используется некоторыми виджетами:l OBJ_FOCUSED: виджет в фокусе

l Используется всеми виджетами:l OBJ_DISABLED: виджет выключен

l Все сообщения будут игнорироваться

state общие биты

Page 49: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 49

Макросы для управления битамисостояния

l SetState(pObj, state)l ClrState(pObj, state)l GetState(pObj, state)l GOLFindObject(ID)lWhere…l pObj = указатель на виджетl state = ИЛИ комбинация битов

Page 50: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 50

Биты состоянияПример

Text

Text

Text

Text

if (GOL_DRAW()){// Example Button text alignmentsSetState(pBtn, BTN_TEXTTOP);SetState(pBtn, BTN_TEXTRIGHT);

// Example Button FocusSetState(pBtn, BTN_FOCUSED);

// Example Button ActionSetState(pBtn, BTN_DISABLED);state = BTN_PRESSED|BTN_TEXTTOP|BTN_TEXTLEFT;SetState(pBtn, state);

// Example Hiding ButtonSetState(pBtn, BTN_HIDE)}

Page 51: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 51

Пример рисованияТипичное приложение

Инициализирует графику исоздает стиль используемыйпо умолчанию GOLInit()

Создание альтернативного стиля*alt = GolCreateScheme()

Создание объектовObjCreate(,,)

РисованиеобъектовGOLDraw()

main()

* Этот шаг может быть пропущен если используются цветапо умолчанию

GOLInit() запускаетInitGraph() иGOLCreateScheme().

Page 52: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 52

Использование виджетов

•Добавьте необходимыефайлы в проект:

•GOL.c

•Primitive.c

•widget.c

•DisplayDriver.c

•GOL.h

•Graphics.h

•GenericTypeDefs.h

•Primitives.h

•widget.h

•DisplayDriver.h

•GraphicsConfig.h

•Plus Font and Bitmap files

Page 53: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 53

Использование виджетов

#define USE_GOL#define USE_BUTTON // Enable Button Object.//#define USE_WINDOW // Enable Window Object.//#define USE_CHECKBOX // Enable Checkbox Object.//#define USE_RADIOBUTTON // Enable Radio Button Object.//#define USE_EDITBOX // Enable Edit Box Object.//#define USE_LISTBOX // Enable List Box Object.//#define USE_SLIDER // Enable Slider or Scroll Bar Object.//#define USE_PROGRESSBAR // Enable Progress Bar Object.#define USE_STATICTEXT // Enable Static Text Object.//#define USE_PICTURE // Enable Picture Object.//#define USE_GROUPBOX // Enable Group Box Object.//#define USE_ROUNDDIAL // Enable Dial Object.//#define USE_METER // Enable Meter Object.//#define USE_GRID // Enable Grid Object.//#define USE_CHART // Enable Chart Object//#define USE_CUSTOM // Enable Custom Control Object

l Разрешите нужные виджеты вGraphicsConfig.h

Page 54: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 54

В Лабораторной Работе № 2 вынаучитесь:

Создавать простое меню дляприложения

Создавать простое меню дляприложения

Page 55: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 55

Вы научитесь создаватьвот такое простое меню

Лабораторная работа 2Создание меню

Кнопка с текстом

Кнопка с картинкой

Статическийтекст с рамкой

Статический текст

Page 56: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 56

Интерфейс с пользователемИнтерфейс сообщений

Page 57: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 57

Интерфейс сообщений

l Упрощает интеграцию устройств вводаl Позволяет эффективно управлятьвиджетами

l В будущем будет добавлена поддержкадругих устройств ввода (e.g., mouse)

Интерфейс сообщений

ФФ--цияция рисованиярисования 11(i.e. 3D (i.e. 3D КнопкаКнопка))

ФФ--цияция рисованиярисования 22(i.e. Progress Bar)(i.e. Progress Bar)

ФФ--цияция рисованиярисования NN

Приложение

Уровень графических объектов

……

Клавиатура Touch панельКнопки

Page 58: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 58

Интерфейс с устройством вводаl Получить событие от пользователя

l Пример драйвера для touch панели включен вбиблиотеку

l Заполнить структуру сообщенияl Вызвать GOLMsg(&msg)

l Где &msg адрес структуры сообщенияl GOLMsg(&msg) интерпретирует сообщениевызывает GOLMsgCallback(…) для обработкипользователем и обрабатывает сообщения поумолчанию

Page 59: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 59

l Структура сообщения

typedef struct { BYTE type;BYTE uiEvent; SHORT param1; SHORT param2;} GOL_MSG;

l type = TYPE_KEYBOARD или TYPE_TOUCHSCREENl param1 и param2 зависят от типа

l Для touch панели:l param1: x координатаl param2: y координата

l Для клавиатуры:l param1: ID виджета получающего сообщениеl param2: зависит от события

Структура сообщения

Page 60: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 60

Структура Сообщения

l uiEvent определяет тип событияl Для touch панели

l EVENT_PRESSl EVENT_RELEASEl EVENT_MOVEl EVENT_INVALID

l Не нажата

l Для клавиатуры и кнопокl EVENT_KEYSCAN

l Обычно скан кодl EVENT_CHARCODE (только edit box)

l param2 = код символаl EVENT_INVALID

l Не нажата

AT скан кодыописаны вфайле помощи.

Page 61: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 61

Примерзаполнения сообщения для кнопки

if(S5){//button is pressedmsg->type = TYPE_KEYBOARD;msg->uiEvent = EVENT_KEYSCAN; msg->param1 = ID;msg->param2 = SCAN_CR_PRESSED;

}else{//button is releasedmsg->type = TYPE_KEYBOARD;msg->uiEvent = EVENT_KEYSCAN; msg->param1 = ID;msg->param2 = SCAN_CR_RELEASED;

}return;

Page 62: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 62

Интерфейс с пользователемОбработка сообщений

Page 63: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 63

Менеджер сообщений

l GOLMsg(&msg)

l Находит виджет которыйдолжен принять сообщение

l Транслирует сообщениеl Вызывает функциюGOLMsgCallback(…) дляобработки сообщенияпользователем

l Выполняет обработкусообщения по умолчанию

ID_OBJ1 -> Биты состояния

ID_OBJ2 -> Биты состояния

ID_OBJ3 -> Биты состояния

ID_OBJN -> Биты состояния

Связанный список

Page 64: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 64

Обработка сообщения поумолчанию для кнопки

ButtonPressed?

ButtonReleased?

SetState(pB, BTN_PRESSED |

BTN_DRAW)

ClearState(pB, BTN_PRESSED)

SetState(pB, BTN_Draw)

Button

Button

Page 65: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 65

Стандартное приложение

Инициализация графики исоздание стиля

используемого по умолчаниюGOLInit()

Создание альтернативный стиля*alt = GolCreateScheme()

Создание объектовObjCreate(,,)

Прорисовкаобъектов

if(GOLDraw())main()

* Можно пропустить этот шаг

ОбработкаGOLMsg(&msg)

Входное событие**Заполнение &msg

** Должна быть определена пользователем

GOLMsgCallback(,,,)**

Page 66: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 66

Что такое Callback?DefinitionССallbackallback функцияфункция позволяетпозволяет нижнемунижнему уровнюуровню программыпрограммывызватьвызвать функциюфункцию определеннуюопределенную нана верхнемверхнем уровнеуровне..

Определение:

Программа

Библиотечная функция

CALLBACKфункция

Уровень приложения

Уровень графическихобъектов

Используется чтобы написать код обрабатывающийсобытие для виджета

Page 67: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 67

GOLMsgCallback()

Программа

GOLMsg()

GOLMsgCallback()

Уровень приложения

Уровень графическихобъектов

Вызывается менеджером GOLMsg() Используется чтобы написать обработку сообщений

Page 68: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 68

GOLMsgCallback()l Вызывается менеджером GOLMsg(&msg)l ДОЛЖНА быть определена в программеl В ней пользователь выполняет необходимыедействия:l Пример: Сменить картинку на кнопке когда она нажатаl Пример: включить LED когда кнопка нажата

l Входные параметры:l objMsg: транслированное сообщениеl pObj: указатель на виджетl pMsg: указатель на структуру сообщения

l Выход:l TRUE: Менеджер запустит обработку по умолчаниюl ‘0’ : Обработка по умолчанию будет пропущена

Page 69: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 69

Функции для работы с виджетом

l Виджет имеющий текст:l ObjSetText(*pObj, *pText)l ObjGetText(*pObj)

l Виджет с изображением:l ObjSetBitmap(*pObj, *pBitmap) l ObjGetBitmap(*pObj)

l Специальные функции:l Примеры:l PbSetPos(*pObj) – увеличивает и уменьшает позициюдля progress bar

l MtrIncVal(*pObj), MtrDecVal(*pObj) – увеличивает иуменьшает позицию для стрелочного индикатора

Page 70: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 70

DOWN

GOLMsgCallback()Пример

WORD GOLMsgCallback(objMsg,pObj,pMsg){…objID = GetObjID(pObj);pSldObj = (*SLIDER)GOLFindObj(SLD1);

if(objID == BTN1){if (objMsg == BTN_MSG_PRESSED){

BtnSetBitmap(pObj, &blueDOWNarrow);SetState(pBTN1, BTN_TEXTBOTTOM);SldDecPos(pSldObj);SetState(pSldObj, SLD_DRAW_THUMB);SlowMotor();}

else{BtnSetBitmap(pObj, NULL);ClrState(pObj, BTN_TEXTBOTTOM);}}

…}

Page 71: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 71

Интерфейс с пользователемGOLDrawCallback()

Page 72: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 72

GOLDrawCallback

Программа

GOLDraw()

GOLDrawCallback()

Уровень приложения

Уровень графическихобъектов

Вызывается менеджером рисования GOLDraw()

Page 73: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 73

Customized DrawingGOLDrawCallback()

l Вызывается менеджером GOLDraw()l Прорисовка всех виджетов закончена

l ДОЛЖНА быть определена пользователемl Если возвращает TRUE то управление переходитобратно к менеджеру GOLDraw()

l Если возвращает ‘0’ пользователь не закончилрисование

l Здесь пользователь может рисоватьдополнительные элементы

l Единственное безопасное место чтобы:l Изменить параметры рисованияl Изменить или создать новый связанный списоквиджетов

Page 74: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 74

Создание экрана

l Используйте GOLFree() чтобы удалитьтекущий связанный списокl Удаляет все виджеты из heap памяти

l Используйте ObjCreate(,,,) чтобысформировать новый список

l Установите размер heap для экрана ссамым большим количеством виджетов

Page 75: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 75

Стандартное приложение

Инициализация графики истиля по умолчанию

GOLInit()

Создание альтернативного стиля*alt = GolCreateScheme()

Создание объектовObjCreate(,,)

Прорисовка объектовGOLDraw()

main()

* Этот шаг может быть пропущен

Входное событие**Заполнение &msg

ОбработкаGOLMsg(&msg)

** Долны быть определены пользователем

GOLMsgCallback(,,,)**

GOLDrawCallback()**

Page 76: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microchip Technology Incorporated. All Rights Reserved. LCD Slide 76

В Лабораторной Работе № 3 вынаучитесь:

Обмену сообщениями между объектамибиблиотеки

Обмену сообщениями между объектамибиблиотеки

Page 77: Обзор Графической библиотеки Microchip Graphics Library

© 2009 Microcip Technology Incorporated. All Rights Reserved. 1341 GFX2 Slide 77

Вы научитесь обмениваться сообщениямимежду графическими объектами

Лабораторная работа 3Управление печкой

Start buttonToggle State SetChange text on press

Overlay Progress Baron top of Exit button

IncrementCount Decrement

Count

Edit Boxes

Static Text

Count down will not occur when “Start” is pushed. We implement this functionality later.