|
|
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:
|
Panorama VESA - fast video driver for multi core computers
|
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
|