[[ header START ]]

Welcome to OS2.GURU site! (eComStation.RU)

Select your language: Russian English Deutch Spanish Italian Portuguese Czech Polish French

Frequently asked questions and answers:
telegram

Форум обсуждение

telegram

Send message

telegram

[ +7-981-8529467 (Санкт-Петербург)

telegram

t.me/os2_guru

eComStation.RU


ru · en · de · es · it · pt · cz · pl · fr
OS/2 - это совершенно другая операционная система для PC (ArcaOS, eComStation, IBM OS/2 Warp)
Программы, новости, статьи, поддержка пользователей, оборудование, вопросы и ответы.
 
[Что такое OS/2?  Новости  Установка  Обновление  
 
 
Применение  Будущее  Сообщество  Проекты  

[Как заработать в OS/2?

Как купить OS/2 дискету?

Идеи для фанатов OS/2

*

(Карта сайта)

 
 
[[ head-3-search ]]

Списки протестированного OS/2 оборудования

[[ head-3-search END ]]

 
Обновление

 
Программы

 
(Санкт-Петербург)

 
Преимущества (1)

 
Разработчику (1)

 
(Пайпы программ)

 
Компании: (1)

 
История (1):

 
(Бонусы)

 
Советы:

 
(Барьеры и решения)

 
Технологии: (1)

 
(Применение в науке, лаборатории, ..)

 

 
Готовые решения:

 
Новая eComStation:

 
Будущее: (1)

 
(Ссылки на другие сайты)

 
(Картинка дня)

 
Артефакты OS/2

 
Гаджеты

eCo Software Developer Connection


About DevCon
Subscription to DevCon
Budget of DevCon
FAQ


Roadmap
eCo Software runtime
eCo Software toolkit
Contacts

  Вы можете перевести эту страничку на русский язык
Присылайте готовый текст через веб-форму

Output via GRADD

      

#include 

PBYTE pVRAM;
FOURCC ScreenColorFormat;
ULONG  ScanLineSize;
ULONG  ScreenWidth;
ULONG  ScreenHeight;
ULONG  BPP;

PBYTE  PointPtr;

INITPROCOUT initout;
GDDMODEINFO  ScreenModeInfo;
HWREQIN hwreqin;
RECTL   rctl;

ULONG rc;

      /* получим указатель на начало видеопамяти */

      initout.ulLength = sizeof(initout);
      rc = VMIEntry(0, VMI_CMD_INITPROC, NULL, &initout);
      if (rc) {
         // ошибка, чего-то где-то не так
      }
      pVRAM = (PBYTE)(initout.ulVRAMVirt);

      /* теперь получим информацию об экранном режиме */

      ScreenModeInfo.ulLength = sizeof(ScreenModeInfo);
      rc = VMIEntry(0, VMI_CMD_QUERYCURRENTMODE, NULL. &ScreenModeInfo);
      ScreenWidth = ScreenModeInfo.ulHorizResolution;
      ScreenHeight = ScreenModeInfo.ulVertResolution;
      ScanLineSize = ScreenModeInfo.ulScanLineSize;
      ScreenColorFormat = ScreenModeInfo.fccColorEncoding;

      /* получим количество байт на пиксель */
      switch (ScreenColorFormat) {
         case FOURCC_LUT8: // 256 цветов с палитрой
              BPP = 1;
              break;
         case FOURCC_R555: // 32768 цветов
         case FOURCC_R565: // 65536 цветов
              BPP = 2;
              break;
         case FOURCC_RGB3: // 16 млн цветов, три байта на пиксель
         case FOURCC_BGR3: // обратный порядок байт
              BPP = 3;
              break;
         case FOURCC_RGB4:
         case FOURCC_BGR4: // 16 млн цветов, четыре байта на пиксель
              BPP = 4;
              break;
      }
      /* Теперь чтобы нарисуем точку на экране с координатами x,y */

      PointPtr = pVRAM + y*ScanLineSize + x*BPP;

      /* Захватываем экран, чтобы не было глюков */
      hwreqin.ulLength = sizeof(hwreqin);
      hwreqin.ulFlags = REQUEST_HW;
      /* мы пишем в экран, нужно сообщить об этом градду, 
         на случай если используется софтверный курсор */
      hwreqin.cScrChangeRects = 1;
      hwreqin.arectlScreen = &rctl;
      /* в rctl нужно запихать координаты прямоугольника, в котором мы рисуем */
      rc =  VMIEntry(0, VMI_CMD_REQUESTHW, &hwreqin, NULL);
      if (rc) {
         // чего-то некругло, в экран писать нельзя!
      }
      /* Допустим у нас экран в R565 - формате, то есть два байта на пиксель */

      *((PUSHORT)(PointPtr)) =  Color;
      /* освободим видюху */
      hwreqin.ulFlags = 0;
      rc =  VMIEntry(0, VMI_CMD_REQUESTHW, &hwreqin, NULL);

 

 
Обучение новичков

Отчет: OS/2 совместимое оборудование

 
Статьи


   
  Почему eComStation?
Возможности
Особенности
Применение
Ролики и скриншоты
   eComStation для
для бизнесменов
для студентов и инженеров
для продавцов компьютеров
сообщество пользователей
   Разработчик
Распространить программу
Описание API, библиотеки
Начать новый проект
Конкурсы
   Программы
Он-лайн каталог
Выбрать через eCo Market
   Служба поддержки
Отправить вопрос
Купить eComStation
Вопросы и ответы
Обучение новичков
 
 
© 2001 - 2021 eCo Software, All rights reserved
Сибирский Медведь технологическая компания
eComStation Serenity Systems International • OS/2 Warp IBM Corporation • ArcaOS Arca Noae