Skip to content

Commit 958583a

Browse files
committed
Implement NVDI vr_clip_rects* functions
1 parent 30a7a9a commit 958583a

File tree

7 files changed

+230
-6
lines changed

7 files changed

+230
-6
lines changed

SRCFILES

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,10 @@ _VDI_EXTENSIONS = \
292292
n_vqt_trackkern.c \
293293
n_vqt_xfntinfo.c \
294294
n_vr_transfer_bits.c \
295+
n_vr_clip_rects_by_dst.c \
296+
n_vr_clip_rects_by_src.c \
297+
n_vr_clip_rects32_by_dst.c \
298+
n_vr_clip_rects32_by_src.c \
295299
n_vs_ctab.c \
296300
n_vs_ctab_entry.c \
297301
n_vs_dflt_ctab.c \

mt_gemx.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1937,7 +1937,11 @@ long vqr_bg_color (short handle, COLOR_ENTRY *fg_color);
19371937
long vqr_fg_color (short handle, COLOR_ENTRY *fg_color);
19381938
long vqt_bg_color (short handle, COLOR_ENTRY *fg_color);
19391939
long vqt_fg_color (short handle, COLOR_ENTRY *fg_color);
1940-
void vr_transfer_bits (short handle, GCBITMAP *src_bm, GCBITMAP *dst_bm, short *src_rect, short *dst_rect, short mode);
1940+
void vr_transfer_bits (short handle, GCBITMAP *src_bm, GCBITMAP *dst_bm, const short *src_rect, const short *dst_rect, short mode);
1941+
short vr_clip_rects_by_dst (short handle, const RECT16 *dst_clip_rect, const RECT16 *src_rect, const RECT16 *dst_rect, RECT16 *clipped_src_rect, RECT16 *clipped_dst_rect);
1942+
short vr_clip_rects_by_src (short handle, const RECT16 *src_clip_rect, const RECT16 *src_rect, const RECT16 *dst_rect, RECT16 *clipped_src_rect, RECT16 *clipped_dst_rect);
1943+
short vr_clip_rects32_by_dst (short handle, const RECT32 *dst_clip_rect, const RECT32 *src_rect, const RECT32 *dst_rect, RECT32 *clipped_src_rect, RECT32 *clipped_dst_rect);
1944+
short vr_clip_rects32_by_src (short handle, const RECT32 *src_clip_rect, const RECT32 *src_rect, const RECT32 *dst_rect, RECT32 *clipped_src_rect, RECT32 *clipped_dst_rect);
19411945
short vs_ctab (short handle, COLOR_TAB *ctab);
19421946
short vs_ctab_entry (short handle, short __index, long color_space, COLOR_ENTRY *color);
19431947
short vs_dflt_ctab (short handle);
@@ -2034,6 +2038,14 @@ long udef_vq_hilite_color (short handle, COLOR_ENTRY *hilite_color);
20342038
#define udef_vqt_fg_color vqt_fg_color
20352039
/** UDEF version of vr_transfer_bits(). See \ref overviewUDEF for details about UDEF feature */
20362040
#define udef_vr_transfer_bits vr_transfer_bits
2041+
/** UDEF version of vr_clip_rects_by_dst (). See \ref overviewUDEF for details about UDEF feature */
2042+
#define udef_vr_clip_rects_by_dst vr_clip_rects_by_dst
2043+
/** UDEF version of vr_clip_rects_by_src (). See \ref overviewUDEF for details about UDEF feature */
2044+
#define udef_vr_clip_rects_by_src vr_clip_rects_by_src
2045+
/** UDEF version of vr_clip_rects32_by_dst (). See \ref overviewUDEF for details about UDEF feature */
2046+
#define udef_vr_clip_rects32_by_dst vr_clip_rects32_by_dst
2047+
/** UDEF version of vr_clip_rects32_by_src (). See \ref overviewUDEF for details about UDEF feature */
2048+
#define udef_vr_clip_rects32_by_src vr_clip_rects32_by_src
20372049
/** UDEF version of vs_ctab(). See \ref overviewUDEF for details about UDEF feature */
20382050
#define udef_vs_ctab vs_ctab
20392051
/** UDEF version of vs_ctab_entry(). See \ref overviewUDEF for details about UDEF feature */

n_vr_clip_rects32_by_dst.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include "gem_vdiP.h"
2+
#include "mt_gemx.h"
3+
4+
/**
5+
*
6+
* @param handle Device handle
7+
* @param dst_clip_rect clipping rectangle
8+
* @param src_rect source rectangle
9+
* @param dst_rect destination rectangle
10+
* @param clipped_src_rect clipped source rectangle
11+
* @param clipped_dst_rect clipped destination rectangle
12+
*
13+
* @since NVDI 5.02 (check bit #2 of workout[30] of vq_extnd())
14+
*
15+
*
16+
*
17+
*/
18+
19+
short vr_clip_rects32_by_dst(short handle, const RECT32 *dst_clip_rect, const RECT32 *src_rect, const RECT32 *dst_rect, RECT32 *clipped_src_rect, RECT32 *clipped_dst_rect)
20+
{
21+
short vdi_control[VDI_CNTRLMAX];
22+
short vdi_ptsin[24];
23+
short vdi_ptsout[16];
24+
short vdi_intout[1];
25+
RECT32 *pp;
26+
27+
VDI_PARAMS(vdi_control, vdi_dummy, vdi_ptsin, vdi_intout, vdi_ptsout);
28+
29+
pp = (RECT32*)&vdi_ptsin[0];
30+
*pp++ = *dst_clip_rect;
31+
*pp++ = *src_rect;
32+
*pp = *dst_rect;
33+
34+
VDI_TRAP_ESC (vdi_params, handle, 171, 2, 12, 0);
35+
36+
#if CHECK_NULLPTR
37+
if (clipped_src_rect)
38+
#endif
39+
{
40+
pp = (RECT32*)&vdi_ptsout[0];
41+
*clipped_src_rect = *pp;
42+
}
43+
#if CHECK_NULLPTR
44+
if (clipped_dst_rect)
45+
#endif
46+
{
47+
pp = (RECT32*)&vdi_ptsout[8];
48+
*clipped_dst_rect = *pp;
49+
}
50+
51+
return vdi_intout[0];
52+
}

n_vr_clip_rects32_by_src.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include "gem_vdiP.h"
2+
#include "mt_gemx.h"
3+
4+
/**
5+
*
6+
* @param handle Device handle
7+
* @param src_clip_rect clipping rectangle
8+
* @param src_rect source rectangle
9+
* @param dst_rect destination rectangle
10+
* @param clipped_src_rect clipped source rectangle
11+
* @param clipped_dst_rect clipped destination rectangle
12+
*
13+
* @since NVDI 5.02 (check bit #2 of workout[30] of vq_extnd())
14+
*
15+
*
16+
*
17+
*/
18+
19+
short vr_clip_rects32_by_dst(short handle, const RECT32 *src_clip_rect, const RECT32 *src_rect, const RECT32 *dst_rect, RECT32 *clipped_src_rect, RECT32 *clipped_dst_rect)
20+
{
21+
short vdi_control[VDI_CNTRLMAX];
22+
short vdi_ptsin[24];
23+
short vdi_ptsout[16];
24+
short vdi_intout[1];
25+
RECT32 *pp;
26+
27+
VDI_PARAMS(vdi_control, vdi_dummy, vdi_ptsin, vdi_intout, vdi_ptsout);
28+
29+
pp = (RECT32*)&vdi_ptsin[0];
30+
*pp++ = *src_clip_rect;
31+
*pp++ = *src_rect;
32+
*pp = *dst_rect;
33+
34+
VDI_TRAP_ESC (vdi_params, handle, 171, 3, 12, 0);
35+
36+
#if CHECK_NULLPTR
37+
if (clipped_src_rect)
38+
#endif
39+
{
40+
pp = (RECT32*)&vdi_ptsout[0];
41+
*clipped_src_rect = *pp;
42+
}
43+
#if CHECK_NULLPTR
44+
if (clipped_dst_rect)
45+
#endif
46+
{
47+
pp = (RECT32*)&vdi_ptsout[8];
48+
*clipped_dst_rect = *pp;
49+
}
50+
51+
return vdi_intout[0];
52+
}

n_vr_clip_rects_by_dst.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include "gem_vdiP.h"
2+
#include "mt_gemx.h"
3+
4+
/**
5+
*
6+
* @param handle Device handle
7+
* @param dst_clip_rect clipping rectangle
8+
* @param src_rect source rectangle
9+
* @param dst_rect destination rectangle
10+
* @param clipped_src_rect clipped source rectangle
11+
* @param clipped_dst_rect clipped destination rectangle
12+
*
13+
* @since NVDI 5.02 (check bit #2 of workout[30] of vq_extnd())
14+
*
15+
*
16+
*
17+
*/
18+
19+
short vr_clip_rects_by_dst(short handle, const RECT16 *dst_clip_rect, const RECT16 *src_rect, const RECT16 *dst_rect, RECT16 *clipped_src_rect, RECT16 *clipped_dst_rect)
20+
{
21+
short vdi_control[VDI_CNTRLMAX];
22+
short vdi_ptsin[12];
23+
short vdi_ptsout[8];
24+
short vdi_intout[1];
25+
RECT16 *pp;
26+
27+
VDI_PARAMS(vdi_control, vdi_dummy, vdi_ptsin, vdi_intout, vdi_ptsout);
28+
29+
pp = (RECT16 *)&vdi_ptsin[0];
30+
*pp++ = *dst_clip_rect;
31+
*pp++ = *src_rect;
32+
*pp = *dst_rect;
33+
34+
VDI_TRAP_ESC (vdi_params, handle, 171, 0, 6, 0);
35+
36+
#if CHECK_NULLPTR
37+
if (clipped_src_rect)
38+
#endif
39+
{
40+
pp = (RECT16*)&vdi_ptsout[0];
41+
*clipped_src_rect = *pp;
42+
}
43+
#if CHECK_NULLPTR
44+
if (clipped_dst_rect)
45+
#endif
46+
{
47+
pp = (RECT16*)&vdi_ptsout[4];
48+
*clipped_dst_rect = *pp;
49+
}
50+
51+
return vdi_intout[0];
52+
}

n_vr_clip_rects_by_src.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include "gem_vdiP.h"
2+
#include "mt_gemx.h"
3+
4+
/**
5+
*
6+
* @param handle Device handle
7+
* @param src_clip_rect clipping rectangle
8+
* @param src_rect source rectangle
9+
* @param dst_rect destination rectangle
10+
* @param clipped_src_rect clipped source rectangle
11+
* @param clipped_dst_rect clipped destination rectangle
12+
*
13+
* @since NVDI 5.02 (check bit #2 of workout[30] of vq_extnd())
14+
*
15+
*
16+
*
17+
*/
18+
19+
short vr_clip_rects_by_src(short handle, const RECT16 *src_clip_rect, const RECT16 *src_rect, const RECT16 *dst_rect, RECT16 *clipped_src_rect, RECT16 *clipped_dst_rect)
20+
{
21+
short vdi_control[VDI_CNTRLMAX];
22+
short vdi_ptsin[12];
23+
short vdi_ptsout[8];
24+
short vdi_intout[1];
25+
RECT16 *pp;
26+
27+
VDI_PARAMS(vdi_control, vdi_dummy, vdi_ptsin, vdi_intout, vdi_ptsout);
28+
29+
pp = (RECT16 *)&vdi_ptsin[0];
30+
*pp++ = *src_clip_rect;
31+
*pp++ = *src_rect;
32+
*pp = *dst_rect;
33+
34+
VDI_TRAP_ESC (vdi_params, handle, 171, 1, 6, 0);
35+
36+
#if CHECK_NULLPTR
37+
if (clipped_src_rect)
38+
#endif
39+
{
40+
pp = (RECT16*)&vdi_ptsout[0];
41+
*clipped_src_rect = *pp;
42+
}
43+
#if CHECK_NULLPTR
44+
if (clipped_dst_rect)
45+
#endif
46+
{
47+
pp = (RECT16*)&vdi_ptsout[4];
48+
*clipped_dst_rect = *pp;
49+
}
50+
51+
return vdi_intout[0];
52+
}

n_vr_transfer_bits.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818

1919
void
2020
vr_transfer_bits (short handle, GCBITMAP * src_bm, GCBITMAP * dst_bm,
21-
short *src_rect, short *dst_rect, short mode)
21+
const short *src_rect, const short *dst_rect, short mode)
2222
{
2323
short vdi_control[VDI_CNTRLMAX];
24-
short vdi_intin[4];
25-
short vdi_ptsin[8];
24+
short vdi_intin[4];
25+
short vdi_ptsin[8];
2626

2727
VDI_PARAMS(vdi_control, vdi_intin, vdi_ptsin, vdi_dummy, vdi_dummy);
2828

@@ -31,8 +31,8 @@ vr_transfer_bits (short handle, GCBITMAP * src_bm, GCBITMAP * dst_bm,
3131
vdi_intin[2] = 0;
3232
vdi_intin[3] = 0;
3333

34-
*(GRECT*)(vdi_ptsin +0) = *(GRECT*)src_rect;
35-
*(GRECT*)(vdi_ptsin +4) = *(GRECT*)dst_rect;
34+
*((RECT16*)&vdi_ptsin[0]) = *((const RECT16*)src_rect);
35+
*((RECT16*)&vdi_ptsin[4]) = *((const RECT16*)dst_rect);
3636

3737
vdi_control_ptr(0, GCBITMAP *) = src_bm;
3838
vdi_control_ptr(1, GCBITMAP *) = dst_bm;

0 commit comments

Comments
 (0)