[[ 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

OS/2 GURU


ru · en · de · es · it · pt · cz · pl · fr
OS/2 is a greatly different operating system for PC (ArcaOS, eComStation, IBM OS/2 Warp)
Applications, news, reviews, support of users, hardware, questions and answers.
 
[What is OS/2?  News  Install  Update  
 
 
Usage  Future  Community  Projects  

How to buy
russian OS/2 apps?

The concept of
OS/2 development

 
Update

 
Applications

 
Advantages:

 
For developer:

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

 
Companies:

 
History:

 
(Бонусы)

 
Advice:

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

 
Technologies:

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

 

 
Solutions

 
New eComStation:

 
Future:

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

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

 
OS/2 artefacts:

 
Gadgets:

ArcaOS 5.0 Russian
Russian ARCAOS exists and it's available since the middle of 2017. All versions are supported: 5.0, 5.0.1, 5.0.2.

eCo Software is able release OS/2 LIP packages for any other language (German, Dutch, Brazilian Portuguese, Spanish, Sweden, etc)

Usage of DIVE for developing graphics applications


TITLE: Usage of DIVE for developing graphics applications

DATE: 2002-02-04 12:19:52

AUTHOR: Artem Davidenko

Please use online translator
go to http://translate.google.com
and request the translation of http://ru.ecomstation./showarticle.php?id=46
to your language

DIVE (Direct Interface Video Extensions) ... .......... ... ........... ....... . ..... ....... . ..... API ..... ....... ... ".........." ........... ............. ......, ......... . ......... ....... ...... DIVE ............. ... ...... .......... ..... . ............. . ...... ..... ............., ... ......., 2D ....... .....-.......... ... ......... ........ .......

........... ......... .......... DIVE ............ ......... .......:

  • ...... .......... ........ ...........
  • ............. . ............... DIVE
  • ............ ........ .......
  • ........... ..... ......
  • ......... .....-..... ... .....-..... ......... (........... ........)
  • ......... ............. .......
  • ....... ........... ... ....... ......., ....... ....... .......... .......... ...... ....
  • ....... ............ ...... (... banked-.......)

....... .......:

  • CLUT 8 (256 color) - "LUT8"
  • 8-bit grayscale - "GREY"
  • RGB 16 (5-6-5, 5-5-5) - "R565", "R555", "R664"
  • RGB 24 (R-G-B, B-G-R) - "RGB3", "BGR3"
  • RGB 32 (R-G-B, B-G-R) - "RGB4", "BGR4"
  • YUV 9 - DVI/Indeo three-plane color subsampled - "YUV9"
  • YUV 411 - "YUV411"
  • YUV 422 - "YUV422"
  • YUV CCIR601 - three-plane 2x2 color subsampled (MJPEG, MPEG) - "Y2X2"
  • YUV CCIR601 - three-plane 4x4 color subsampled? - "Y4X4"

........ .......:

  • CLUT 8 (256 ......)
  • RGB 16 (5-6-5, 5-5-5, 6-6-4)
  • RGB 24 (R-G-B, B-G-R)
  • RGB 32 (R-G-B-x,? B-G-R-x)
  • Blitter Operation

.......... ... .... ............. DIVE: .......... DIVE-........ . ...... ...... . ....... ......... .................. .............. DIVE . .......... DIVE handle:

ULONG  ulErrorCode;
HDIVE  *phDiveInst;
BOOL   fNonScreenInstance;
PPVOID ppFrameBuffer;

ulErrorCode = DiveOpen(*phDiveInst, fNonScreenInstance, ppFrameBuffer);

....... DiveClose ...... .... ....... .. ......... ...... ...........

.... DIVE .......... ........ . .....-....., .. fNonScreenInstance ...... .... ........... . FALSE, ....., .... DIVE ............ ...... ... ......... ....... ..... ... ......... ....... ...... ... ...... .. ..... fNonScreenInstance = TRUE. ..... DIVE ... ............ ....... 2D .......... ... ........ ...... ......, .. ...... .... ......... ... ...... DiveAllocImageBuffer. ......... ........ .......... ... ... .......:

ULONG   ulBufNum;
FOURCC  fccColorSpace;
ULONG   ulWidth, ulHeight, ulLineSizeBytes;
PBYTE   pbImageBuffer;

ulErrorCode = DiveAllocImageBuffer
              (
               hDive,             /* DIVE ..... */
               &ulBufNum,         /* ..... ...... */
               fccColorSpace,     /* ...... */
               ulWidth, ulHeight, /* ............ ...... ........... */
               ulLineSizeBytes,
               &pbImageBuffer
              );

..... .... ... ..... ........., ..... ....... . .... .......... ....... ....... DiveBeginImageBufferAccess ..., ... ... ........ . ......... .......:

PBYTE   pbImageBuffer;
ULONG   ulBufferScanLineBytes, ulBufferScanLines;

ulErrorCode = DiveBeginImageBufferAccess
              (
               hDiveInst,              /* DIVE ..... */
               ulBufferNumber,         /* ..... ...... */
               &pbImageBuffer,         /* ......... .. ..... */
               &ulBufferScanLineBytes, /* ...... ..... . ...... */
               &ulBufferScanLines      /* ..... ..... */
               );

DIVE ......... .......... .... .. .... ..... ...... . .......... ........ . ulBufferScanLineBytes. ..... .......... ..... ......... ...... ...... . pbImageBuffer. ..... .... ... ...... .... ........, .......... ...... ....... DiveEndImageBufferAccess.

.......... ...... ............. DIVE . ......... .......... ....... .. ..... ... ............. . ... ...... ..... ........ ... ............. .......... . ... .......... ......... WM_REALIZEPALETTE ...... .......... ......... ..................:

BYTE       pbPal 1024;

/* ...... ....... .......... ....... . Presentation Manager */
GpiQueryRealColors(hps, 0, 0, 256, (PLONG)pbPal);

/* ......... .. ... ....... ....... . DIVE */
DiveSetDestinationPalette(hDive, (PBYTE)pbPal);

.... .......... .... .......... ....... (........, ... ...... ........... ........... .. .....), ... ...... .... ........ DIVE ........... DiveSetSourcePalette. .... .............. ..... ..... ........... . ..... ......., .. ..... ....... ......... ...... ..... ....... ....... ............

DIVE ............ ................ .......... ...... . ..... Presentation Manager. ... .......... ...... ......... . PM ........., DIVE .......... ...... ........ DIVE .. .......... ........ ....... .... .........., ...-.. .......... ..... ....... ..............

...... DIVE .......... .. ..... ............. ...... ............. ........... ........ ....... ......... .......:

WinSetVisibleRegionNotify(hwnd, TRUE);

...... ........ .... ..... .... ... ............ ........... ........, ...... - ........ ........... ... ..... ..... .. ......... ...... .........., ...... .......... .......:

WinSetVisibleRegionNotify(hwnd, FALSE);

... .......... ............

... ......... ........ ....... ...., ........, ..... ... .... .......... ... ... ....... ... ...... ... ...... .... ... ...... ......... ... ... ........... ... ......... ......., .... ........ ......... WM_VRNDISABLED. . ..... .. ... ......... DIVE .......... ...... .......

DiveSetupBlitter(hDiveInst, 0);

..... .... ... ........... ........, .... ........ ......... WM_VRNENABLED. ......... ..... ...... ......... ...... ...... ........ ......., ........... ....... WinQueryVisibleRegion:

hps = WinGetPS(hwnd);
hrgn = GpiCreateRegion(hps, 0, NULL);
WinQueryVisibleRegion(hwnd, hrgn);

....... DiveSetupBlitter ...... .......... ...... ... ... .......... ........ ......., ....... ....., ........ ......... . ........ ............ ... ...... ......... ........ ...:

RECTL   rctls;
RGNRECT rgnCtl;
SETUP_BLITTER   SetupBlitter;
POINTL  pointl;
SWP     swp;
HPS     hps;
HRGN    hrgn;

rgnCtl.ircStart = 0;
rgnCtl.crc = 50;
rgnCtl.ulDirection = RECTDIR_LFRT_TOPBOT;

/* ......... ........ ....... */
GpiQueryRegionRects(hps, hrgn, NULL, &rgnCtl, rctls);

/* ......... ....... ........ .... ............ .............. */
WinQueryWindowPos( hwnd, &swp );

/* ....... ....... .... .. ....... */
pointl.x = swp.x;
pointl.y = swp.y;
WinMapWindowPoints(WinQueryWindow(hwnd, QW_PARENT), 
                   HWND_DESKTOP, &pointl, 1);

/* ........ .......... . ..... .......... . DIVE */
SIZEL   sizlSrcImg;  /* ...... ......... ........... */
FOURCC  fccSrcColors /* ...... */

SetupBlitter.ulStructLen = sizeof (SETUP_BLITTER);
SetupBlitter.fInvert = 0;
SetupBlitter.fccSrcColorFormat = fccSrcColors;
SetupBlitter.ulSrcLineSizeBytes = ulScanLineBytes;
SetupBlitter.ulSrcWidth = sizlSrcImg.cx;
SetupBlitter.ulSrcHeight = sizlSrcImg.cy;
SetupBlitter.ulSrcPosX = 0;
SetupBlitter.ulSrcPosY = 0;
SetupBlitter.fccDstColorFormat = FOURCC_SCRN;
SetupBlitter.ulDstLineSizeBytes = 0;
SetupBlitter.ulDstWidth = swp.cx;
SetupBlitter.ulDstHeight = swp.cy;
SetupBlitter.ulDstPosX = 0;
SetupBlitter.ulDstPosY = 0;
SetupBlitter.lScreenPosX = pointl.x;
SetupBlitter.lScreenPosY = pointl.y;
SetupBlitter.ulNumDstRects = rgnCtl.crcReturned;
SetupBlitter.pVisDstRects = rctls;
DiveSetupBlitter (hDive, &SetupBlitter);

...... ..... ......... ........... ........... ........... fccSrcColors.

. ........... .... ......., DIVE ....... ............... ... ...... . ........... .. ... .. ............ ....... ............. ......... .. ..... ........... ...-.. ... ......... ....... ..... ... ......... ....... . ....... . ...... ...... ....... ...... ..... ...... .... .......... . fccDstColorFormat. ulDstWidth . ulDstHeight ...... ......... ..... ...... ..........., ulNumDstRects ...... .... ..... 1 . pVisDstRects ...... ......... .. ....... . xLeft = yBottom = 0, xRight = ulDstWidth . yTop = ulDstHeight.


... ........... ....., *ppFrameBuffer ............ DiveOpen ...... ... ...... ......... . .....-....... .... ..... ....... ............, ... .......... ..... .... .............. ............., ......... ..... . ............ ....... ....... ........... ... ....... .......:

  • DiveAcquireFrameBuffer
  • DiveDeacquireFrameBuffer
  • DiveSwitchBank
  • DiveCalcFrameBufferAddress

....... DiveQueryCaps ............ ... ......... .......... . .......... ..... .......... . banked ....... DiveCalcFrameBufferAddress ........ ........ ..... .......

PRECTL prectlDest;          /* .......... . ........ */
PVOID  pDestinationAddress; /* ..... ...... */
PULONG pulBankNumber;       /* ..... ..... */
PULONG pulRemlinesInBank;   /* ....., .......... . ..... */

ulErrorCode = DiveCalcFrameBufferAddress
              (
               hDiveInst, &prectlDest, &pDestinationAddress,
               &pulBankNumber, &pulRemlinesInBank
              );

... .......... ........... ............. prectlDest ...... .......... ...... ....... ....... .... ........... .... ....... ..... ..... ....... ............ ......, .. .......... .. ...... ........ ...... ... pulRemlinesInBank ..... ... ....... ...... ...... ......... . pDestinationAddress ...... .... .... .. ....... ... . .....-.....(... DiveQueryCaps) (... .......... .. . ..... .... ..... ............ ... ... .. DIVE). .... . ...., .... ....... ..... ........ .........., .. ...... ...... ............... .......... ........

... ...... . ..... ...... .......... . DiveAcquireFrameBuffer . ............. DiveDeacquireFrameBuffer. ..... .... .......... .. ...... ........ ....... . .....-...... ..... ........... WM_VRNDISABLED . WM_VRNENABLED. ......... ........ ............ ...... ..... .....-..... ... ......... .. ...... .... fFBAccessOK ......... ..... .......... ........ ......... WM_VRNDISABLED . ............... ... ......... WM_VRNENABLED.

BOOL  fKeepBlitting = TRUE;
BOOL  fFBAccessOK;
RECTL rectlOutput;
RECTL rectlDest;
ULONG ulMoreLines;
LONG  lBlitTop;
PVOID pDestinationAddress;
ULONG ulBankNumber;
ULONG ulRemlinesInAperature;
BOOL  fAcquired = FALSE;

while (fKeepBlitting)
.
   /* ... ..... ..... DiveSetupBlitter ... . ...... ...    */
   /********************************************************/
   /* .......... .......... ..... ... ....... ..... ...... */
   /* ... ..... ....... ......... . ....... .....          */
   /* ............ ...... .... ... ........... .. .....    */
   /* .........                                            */
   /********************************************************/

   ulMoreLines = rectlDest.yTop - rectlDest.yBottom;
   memcpy(&rectlDest, &rectlOutput, sizeof(RECTL));
   while (ulMoreLines && fFBAccessOK)
   .
      ulErrorCode = DiveCalcFrameBufferAddress
                    (
                     hDive, rectlDest, &pDestinationAddress,
                     &ulBankNumber, &ulRemlinesInAperture
                    );
      if (!fAcquired)
      if (!DiveAcquireFrameBuffer(hDive, ulBankNumber)) 
       fAcquired = TRUE;
       else break;
       
      DiveSwitchBank(hDive, ulBankNumber);
      .
         if (ulRemlinesInAperture < ulMoreLines)
         .
            rectlDest.yTop -= ulRemlinesInAperture;
            ulMoreLines -= ulRemlinesInAperture;
         .
         else ulMoreLines = 0;
      .
      if (fAcquired)
       DiveDeacquireFrameBuffer(hDive);
   . /* end: .... .... ..... ... ...... */
. /* end: .... ...... */

.... .......:

  • ...... ....., .... ... ........, ..... ........... . ........ ......
  • ....... ....... ..... (..... ..........) . ......... .....
  • ........ ... DIVE ..... . ....... - book/mmref2.inf
  • ....... ... . ...-.. ....... - samples/mm/dive/ . /samples/mm/fsdive/
  • ..... ........ ...... ....... .......... ........ ...... ......... ................ ... /2 (. . ......... .......).
  • ...-.. ....... ................ RDM2.

..... .. ...... .......... .. ....... ............. DIVE

........... ..... . .. ...... ... dos'a (......... .....-...... dpmi ...... (os/2 . ........ ....... ........:))
... ...... "the Matrix" :)
......., ... . ........ ...........

- ..... ......... aka sNOa aka 2:5036/12.777

P.S.

.. .... ... ...... ........ ......... divestuff.zip, ........ . CD06.

P.P.S.

greetings .... ........ ....... ..... . .. ... . /2 .... ........

.... ... ..... .. #os2russian

e-Deniska . e-co .. ............. ....... .. .......

Lelik - WarpVision ...... .....

[zuko] - .. ... ........ .... ...... .. ..... (....... ../...)

nickk - . ......... .. ..... mkisofs

RElf - .. ......... ........ ..........

Test the program:

How to prepare USB flash disks (USB harddisks and other USBMSD devices) so eComStation can access it?

Comments:

Validator
2002-02-04 16:00:00

...... "........" - ......... ..... ......... :-). . .... . .. .. Warp4+XRRM15+14.082c+SDD b44 - ... ........ ...... ......... ....... .... . .. ....., ...... . ....... .........? |-)

sNOa
2002-02-04 17:33:34

...... ... .. ........., . ........ .....(.......... ... ..... ...... ........... ..... .......... . ......). ... ........ .. ACP2+SDD b43.

......
2002-02-04 17:44:35

2sNOa: . ... .....-...... ..... ....? .... .....-...... ........., .. ..........?

Sergey Posokhov
2002-02-04 18:49:19

Bugs, ........... .....-.. ..........

..... ..... ..... . ........ .....!!!

... ..... .. 5 .. 8 ........ :-)

zuko
2002-02-04 20:05:44

sNOa: ../...

sNOa
2002-02-04 21:28:57

2zuko: .......

2......: .....-.. .... . ... . ........ .......

.. .... .. ........ ... ... :(

Max Droganow
2002-02-05 09:48:34

....- .. ... .......-.. ......... ??? ....... ... .... - .. .... ....-.-.-.-..... (........ .... .... . ....... .. ......... - .... .. .. ... ........ ...... ;-))))) )

Max Droganow
2002-02-05 09:50:31

. ...... - .... ......... ........... ......... (PSSST-4 ZX Speccy)

RElf
2002-02-05 11:16:29

. ....... .. ... . ....... ... . DIVE .........:

Fix for DIVE.DLL to allow hicolor. Look for 0BC0C745F000 and replace the latest 00 with 01. Don't forget to unpack by lxLite before!

SERG
2002-02-05 11:57:07

..... ......... ............

........ .... ... .. .....

.... ......... ............ ......... .... ........ . .... xonex.

Eugene Gorbunoff
2002-02-05 13:13:02

........ .... ... ............ ...-...... .... "...... ........ ..... .........".

Eugene
2002-02-05 14:28:15

.. FAQ .. ...... ".......":

Q: ... ... .. ........ ..... . .... .......?

A: ... ..... . ......... .......... ........ ..... ........ .........

sNOa
2002-02-05 14:58:02

eros2: ......., .....

RElf: .... .., .... ..... ....., .... ..... .......(........... .... .... ............ . ......).

ppl: . ... ...... .. ...... ........ ..... ........

Max Droganow
2002-02-07 12:11:18

... ..... .... ..... ........... .... ....... ......... ... ........ ... . ......... ........... - ..... ............ .... - ........ ...... . .........., .. ......... .. .......

.... ........
2002-02-11 07:19:45

. ...... Matrix .......... ... ...... . ............, .?

..... ........

sNOa
2002-02-12 22:14:04

2 .... ........: . . ...... ........?

RElf
2002-02-13 04:35:31

... . ....., ....... .....

[url]

ErOS2 ...... ......... DIVE ....... . ...., ....... ... ......... IFSIM2. .. ..... ..... .. ... ........ [url]

... ..., ..... . .... .......... .. ..............

ErOs2
2002-02-13 14:35:13

..... .......... ...... ... ........ .... . ...... .............. ...... ....... . ..... ........ . ScreenSaver (by ....... .....) . Blanker. ...... .... .. ........

Deniska
2002-02-13 15:15:15

. .......... exe .. ..... ........? . .. ....... ... .... .. ......., . ... .. IFSIM - ..... ........ ......

ErOs2
2002-02-13 17:19:42

to Deniska: .... ....

.... ........
2002-03-04 07:16:36

to ErOs2 & sNOa: ...., ......, .. ........ "......." . ..............

sNOa
2002-03-04 18:45:52

...., ....... ..:) ....

LightElf
2002-03-16 10:31:02

........ .. ............ .. .... ........:

1. ....... .......... ........... ..... .......... (. .....-.. .......) .. ....... .......... ......... . ...... .............. ....... ........, ....... .......... ....... DiveQueryCaps. .... .......... ......... ..., .. ...... (........ ................ . ..... ...... DIVE) ..... FOURCC_R565. ... ....... . ....... ........... ............ ....... . ...... ..... ......., .............. .............. ... ..... .... ....... ... ..., ... ..... ............. .............

2. ... ....... .......... ..........., ..... .......... .. DiveAllocImageBuffer ....... ............. . ........... .. ..... ........... ............. (........... .. .......... .. ...... . ......, ...... ...... ..... .........), ... ... . .... ..... .... ...... ...... . ... ..... ..... .......

Comment this article.


Your Name:

Your E-Mail:

CODE:
......

  

Your Comment:


If eComStation PC doesn't work properly (USB troubles / network is slow / can't run with 2 CPUs / applications crash) then make some efforts, analyze the problems and setup the system. eCSFAQ Frequently asked questions and answers

Articles

Operating System
Software
Hardware
For developer
Misc
From editor





Last active poll: What is the height of RPM barrier?

[Google]

IBM OS/2 Warp

 
For dummies

Report: OS/2 compatible hardware

 
Reviews


     
  Why eComStation?
Features
Advantages
Usage
Clips and screenshots
   eComStation for
for businessmen
for students and engineers
for reselles of computers
community of users
   Developer
Distribute the program
Description of API, libraries
Start new project
Competition
   Applications
On-line catalogue
Select from eCo Market
   Support service
Contact the web-master
Buy eComStation
Frequently asked questions
for Beginners
 
 
© 2001 - 2021 eCo Software, All rights reserved
Сибирский Медведь технологическая компания
eComStation Serenity Systems International • OS/2 Warp IBM Corporation • ArcaOS Arca Noae