| |
Строка 8: | Строка 8: |
| http://lifeofpis.com/#75709 alternatives to lamisil - lamisil tablet side effect http://www.corasyndicate.com/#59342 phentermine - phentermine | | http://lifeofpis.com/#75709 alternatives to lamisil - lamisil tablet side effect http://www.corasyndicate.com/#59342 phentermine - phentermine |
| | | |
− | == Примеры ==
| + | http://donteatthatyet.com/#70608 buy valium online without prescription - generic valium |
− | | |
− | Наконец, уже можно что-нибудь да и нарисовать!
| |
− | Не будем здесь заострять внимание на таких тривиальных вещах, как размещение последующих примеров в коде и инициализация приложения. Пускай, например, рисовать мы будем в вызове по таймеру.
| |
− | | |
− | | |
− | === Первый пример ===
| |
− | | |
− | Для первого раза нарисуем цветной графический примитив.
| |
− | | |
− | <pre>
| |
− | // Вспомогательная переменная для указания области экрана
| |
− | AHIRECT_T rect;
| |
− | | |
− | // Установим цвет кисти. Этим цветом будут выводиться наши графические примитивы
| |
− | AhiDrawBrushFgColorSet(devCx, ATI_565RGB(0,0,255)); // Ярко-синий
| |
− | | |
− | // Зададим прямоугольник на экране, который будет залит нашим цветом
| |
− | rect.x1 = 0;
| |
− | rect.y1 = 0;
| |
− | rect.x2 = 64;
| |
− | rect.y2 = 64;
| |
− | | |
− | // Нарисуем прямоугольник rect
| |
− | AhiDrawSpans( dCtx, &rect, 1, 0);
| |
− | </pre>
| |
− | References: [[AhiDrawSpans]], [[AhiDrawBrushFgColorSet]]
| |
− | | |
− | После этого мы получим на экране синий квадрат в левом верхнем углу. Не больно-то и сложно, не так ли?
| |
− | | |
− | | |
− | === Второй пример ===
| |
− | | |
− | Теперь мы попытаемся решить задачу чуть посложнее, а именно - выведем какую-нибдь картинку. Код для загрузки картинок можно взять из библиотеки AHG, написанной '''tim apple''', а саму картинку нужно будет [[Подготовка графики для ATI|подготовить особым образом]].
| |
− | | |
− | <pre>
| |
− | /* Проведём инициализацию при загрузке эльфа: */
| |
− | | |
− | // Сюда будет загружена наша картинка. Не забудьте освободить память bitmap.image по завершению! | |
− | AHIBITMAP_T bitmap;
| |
− | | |
− | // Загружаем картинку!
| |
− | BMP_LoadFromFile(L"file://b/image.bmp", &bitmap);
| |
− | | |
− | /* Теперь нарисуем картинку на экране средствами ATI */
| |
− | | |
− | AHIPOINT_T point;
| |
− | AHIRECT_T rect;
| |
− | | |
− | // Пусть мы хотим вывести картинку в левом верхнем углу, задаём область как в предыдущем примере
| |
− | rect.x1 = 0;
| |
− | rect.y1 = 0;
| |
− | rect.x2 = bitmap.width;
| |
− | rect.y2 = bitmap.height;
| |
− | | |
− | // И ещё - точку на исходной картинке. Мы выводим целиком, так что нули.
| |
− | point.x = 0;
| |
− | point.y = 0;
| |
− | | |
− | // Не забываем, что в прошлый раз мы установили операцию PATCOPY, но она не подходит для вывода растра!
| |
− | AhiDrawRopSet( dCtx, AHIROP3(AHIROP_SRCCOPY) );
| |
− | | |
− | // Осталось собственно вывести картинку!
| |
− | AhiDrawBitmapBlt( dCtx, &rect, &point, &bitmap, NULL, 0 );
| |
− | </pre>
| |
− | References: [[AhiDrawBitmapBlt]], [[AhiDrawRopSet]]
| |
− | | |
− | | |
− | === Третий пример ===
| |
− | | |
− | В третьем, заключительном примере мы создадим собственную поверхность, перенесём её в видеопамять и будем работать уже из неё.
| |
− | Пример во многом повторяет предыдущий, но смотрите внимательнее - есть значительные отличия!
| |
− | | |
− | <pre>
| |
− | /* Проведём инициализацию при загрузке эльфа: */
| |
− | | |
− | // Сюда будет загружена наша картинка. Не забудьте освободить память bitmap.image по завершению!
| |
− | AHIBITMAP_T bitmap;
| |
− | // Это - размер новой поверхности
| |
− | AHIPOINT_T size;
| |
− | // Сюда мы сохраним указатель на новую поверхность
| |
− | AHISURFACE_T surface;
| |
− | | |
− | // Загружаем картинку!
| |
− | BMP_LoadFromFile(L"file://b/image.bmp", &bitmap);
| |
− | | |
− | /* Создадим новую поверхность - surface, по размеру картинки*/
| |
− | size.x = bitmap.width;
| |
− | size.y = bitmap.height;
| |
− | | |
− | AhiSurfAlloc( dCtx, &surface, &size, AHIFMT_16BPP_565, 0 );
| |
− | | |
− | /* Перенесём картинку на нашу новую поверхность, просто нарисовав её из системной памяти */
| |
− | | |
− | AHIPOINT_T point;
| |
− | AHIRECT_T rect;
| |
− | | |
− | // Задаём область вывода
| |
− | rect.x1 = 0;
| |
− | rect.y1 = 0;
| |
− | rect.x2 = bitmap.width;
| |
− | rect.y2 = bitmap.height;
| |
− | | |
− | // И точку на исходной картинке
| |
− | point.x = 0;
| |
− | point.y = 0;
| |
− | | |
− | // Не забываем, что в прошлый раз мы установили операцию PATCOPY, но она не подходит для вывода растра!
| |
− | AhiDrawRopSet( dCtx, AHIROP3(AHIROP_SRCCOPY) );
| |
− | | |
− | // Сейчас мы хотим вывести картинку на новую поверхность.
| |
− | AhiDrawSurfDstSet( dCtx, surface, 0 );
| |
− | // Так как выводить будем из системной памяти, поверхность-источник нам не важна.
| |
− | | |
− | // Выводим картинку
| |
− | AhiDrawBitmapBlt( dCtx, &rect, &point, &bitmap, NULL, 0 );
| |
− | | |
− | | |
− | /* Теперь мы можем работать с этой картинкой в видеопамяти */
| |
− | AHIPOINT_T point;
| |
− | AHIRECT_T rect;
| |
− | | |
− | // Сейчас мы хотим вывести картинку из новой поверхности на экран.
| |
− | AhiDrawSurfSrcSet( dCtx, surface, 0 );
| |
− | AhiDrawSurfDstSet( dCtx, sDisp, 0 );
| |
− | | |
− | point.x = 0;
| |
− | point.y = 0;
| |
− | | |
− | rect.x1 = 0;
| |
− | rect.y1 = 0;
| |
− | rect.x2 = bitmap.width;
| |
− | rect.y2 = bitmap.height;
| |
− | | |
− | // Для вывода из видеопамяти используется эта функция
| |
− | AhiDrawBitBlt( dCtx, &rect, &point );
| |
− | </pre>
| |
− | References: [[AhiDrawBitBlt]], [[AhiSurfAlloc]], [[AhiDrawSurfSrcSet]], [[AhiDrawSurfDstSet]], [[AhiDrawBitmapBlt]], [[AhiDrawRopSet]]
| |
− | | |
| | | |
| == Заключение == | | == Заключение == |
AHI англ. ATI Handheld Interface — драйвер для чипов ATI. Присутствует в каждой прошивке для телефонов, где есть чип ATI, а это - все телефоны на базе LTE и LTE2.
yZfgLO <a href="http://ejdjudbgakhl.com/">ejdjudbgakhl</a>, [url=http://fevoeukacthf.com/]fevoeukacthf[/url], [link=http://mebvchxotgxg.com/]mebvchxotgxg[/link], http://hkksxkbsltie.com/
http://topsailnet.com/#39145 buy ambien - buy ambien no prescription http://www.americanindependentwriters.net/#35827 buy ativan online - buy ativan without a prescription
http://lifeofpis.com/#75709 alternatives to lamisil - lamisil tablet side effect http://www.corasyndicate.com/#59342 phentermine - phentermine
http://donteatthatyet.com/#70608 buy valium online without prescription - generic valium
Заключение
Итак, рассмотрев основные моменты работы с драйвером ATI и даже несколько конкретных примеров, у вас не должно возникнуть больших проблем с разработкой эльфов с его использованием.
Тем более, что уже существует несколько подобных эльфов, с исходным кодом которых можно ознакомиться.
Если эта статья вам чем-то помогла - пожалуйста, отпишитесь на форуме! --Andy51 19:13, 29 августа 2009 (MSD)