|
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 - .. ......... ........ ..........
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.
|
The development of software for eComStation is profitable: a) system API is effective and considered. b) The market is not so infinite as Windows. All eCS users know about your product. c) Every developer is influencing on the OS significantly. |
|
|
|
IBM OS/2 Warp
|