|
|
|
AD: ArcaOS 5.1 Russian LIP
Russian ARCAOS exists and it's available since the middle of 2017.
All versions are supported: 5.1, 5.1.1.
eCo Software is able to maintain 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:
|
USB Dock - shows devices plugged into PC
|
Comentarios: 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 ....... ............. . ........... .. ..... ........... ............. (........... .. .......... .. ...... . ......, ...... ...... ..... .........), ... ... . .... ..... .... ...... ...... . ... ..... ..... ....... |
Comente este artículo.
|
eCo Software is a group of russian developers. How to support eCo Software? (you can send us some computers. Maybe you don't use the device but it may be useful for the developers). We have the mailboxes in USA, Netherlands, China and Hong Kong. |
|
|
 |
IBM OS/2 Warp
|