160 GLfloat tex1[4], tex2[4], invq;
161 GLfloat invRedScale =
ctx->Visual->InvRedScale;
162 GLfloat invGreenScale =
ctx->Visual->InvGreenScale;
163 GLfloat invBlueScale =
ctx->Visual->InvBlueScale;
164 GLfloat invAlphaScale =
ctx->Visual->InvAlphaScale;
176 invq = (
VB->TexCoord[
v1][3]==0.0) ? 1.0 : (1.0F /
VB->TexCoord[
v1][3]);
177 tex1[0] =
VB->TexCoord[
v1][0] * invq;
178 tex1[1] =
VB->TexCoord[
v1][1] * invq;
179 tex1[2] =
VB->TexCoord[
v1][2] * invq;
180 tex1[3] =
VB->TexCoord[
v1][3];
181 invq = (
VB->TexCoord[
v2][3]==0.0) ? 1.0 : (1.0F /
VB->TexCoord[
v2][3]);
182 tex2[0] =
VB->TexCoord[
v2][0] * invq;
183 tex2[1] =
VB->TexCoord[
v2][1] * invq;
184 tex2[2] =
VB->TexCoord[
v2][2] * invq;
185 tex2[3] =
VB->TexCoord[
v2][3];
187 if (
ctx->StippleCounter==0) {
207 ctx->StippleCounter++;
220#if MAX_WIDTH > MAX_HEIGHT
221# define MAXPOINTS MAX_WIDTH
223# define MAXPOINTS MAX_HEIGHT
345#define INTERP_INDEX 1
373#define INTERP_INDEX 1
404#define INTERP_ALPHA 1
409 pbr[count] = FixedToInt(r0); \
410 pbg[count] = FixedToInt(g0); \
411 pbb[count] = FixedToInt(b0); \
412 pba[count] = FixedToInt(a0); \
439#define INTERP_ALPHA 1
445 pbr[count] = FixedToInt(r0); \
446 pbg[count] = FixedToInt(g0); \
447 pbb[count] = FixedToInt(b0); \
448 pba[count] = FixedToInt(a0); \
458#define CHECK_FULL(count) \
459 if (count >= PB_SIZE-MAX_WIDTH) { \
460 ctx->PB->count = count; \
462 count = ctx->PB->count; \
477 if (
ctx->Line.StippleFlag) {
481#define INTERP_INDEX 1
495 if (
ctx->Line.Width==2.0F) {
499#define INTERP_INDEX 1
500#define XMAJOR_PLOT(X,Y) \
501 pbx[count] = X; pbx[count+1] = X; \
502 pby[count] = Y; pby[count+1] = Y+1; \
503 pbz[count] = Z; pbz[count+1] = Z; \
504 pbi[count] = I; pbi[count+1] = I; \
506#define YMAJOR_PLOT(X,Y) \
507 pbx[count] = X; pbx[count+1] = X+1; \
508 pby[count] = Y; pby[count+1] = Y; \
509 pbz[count] = Z; pbz[count+1] = Z; \
510 pbi[count] = I; pbi[count+1] = I; \
518#define INTERP_INDEX 1
547 if (
ctx->Line.StippleFlag) {
563 if (
ctx->Line.Width==2.0F) {
567#define XMAJOR_PLOT(X,Y) \
568 pbx[count] = X; pbx[count+1] = X; \
569 pby[count] = Y; pby[count+1] = Y+1; \
570 pbz[count] = Z; pbz[count+1] = Z; \
572#define YMAJOR_PLOT(X,Y) \
573 pbx[count] = X; pbx[count+1] = X+1; \
574 pby[count] = Y; pby[count+1] = Y; \
575 pbz[count] = Z; pbz[count+1] = Z; \
612 TRACE(
"Line %3.1f, %3.1f, %3.1f (r%u, g%u, b%u) --> %3.1f, %3.1f, %3.1f (r%u, g%u, b%u)\n",
613 ctx->VB->Win[vert0][0],
ctx->VB->Win[vert0][1],
ctx->VB->Win[vert0][2],
ctx->VB->Color[vert0][0],
ctx->VB->Color[vert0][1],
ctx->VB->Color[vert0][2],
614 ctx->VB->Win[vert1][0],
ctx->VB->Win[vert1][1],
ctx->VB->Win[vert1][2],
ctx->VB->Color[vert1][0],
ctx->VB->Color[vert1][1],
ctx->VB->Color[vert1][2]);
616 if (
ctx->Line.StippleFlag) {
621#define INTERP_ALPHA 1
628 pbr[count] = FixedToInt(r0); \
629 pbg[count] = FixedToInt(g0); \
630 pbb[count] = FixedToInt(b0); \
631 pba[count] = FixedToInt(a0); \
638 if (
ctx->Line.Width==2.0F) {
643#define INTERP_ALPHA 1
644#define XMAJOR_PLOT(X,Y) \
645 pbx[count] = X; pbx[count+1] = X; \
646 pby[count] = Y; pby[count+1] = Y+1; \
647 pbz[count] = Z; pbz[count+1] = Z; \
648 pbr[count] = FixedToInt(r0); pbr[count+1] = FixedToInt(r0); \
649 pbg[count] = FixedToInt(g0); pbg[count+1] = FixedToInt(g0); \
650 pbb[count] = FixedToInt(b0); pbb[count+1] = FixedToInt(b0); \
651 pba[count] = FixedToInt(a0); pba[count+1] = FixedToInt(a0); \
653#define YMAJOR_PLOT(X,Y) \
654 pbx[count] = X; pbx[count+1] = X+1; \
655 pby[count] = Y; pby[count+1] = Y; \
656 pbz[count] = Z; pbz[count+1] = Z; \
657 pbr[count] = FixedToInt(r0); pbr[count+1] = FixedToInt(r0); \
658 pbg[count] = FixedToInt(g0); pbg[count+1] = FixedToInt(g0); \
659 pbb[count] = FixedToInt(b0); pbb[count+1] = FixedToInt(b0); \
660 pba[count] = FixedToInt(a0); pba[count+1] = FixedToInt(a0); \
669#define INTERP_ALPHA 1
675 pbr[count] = FixedToInt(r0); \
676 pbg[count] = FixedToInt(g0); \
677 pbb[count] = FixedToInt(b0); \
678 pba[count] = FixedToInt(a0); \
701 if (
ctx->Line.StippleFlag) {
717 if (
ctx->Line.Width==2.0F) {
721#define XMAJOR_PLOT(X,Y) \
722 pbx[count] = X; pbx[count+1] = X; \
723 pby[count] = Y; pby[count+1] = Y+1; \
724 pbz[count] = Z; pbz[count+1] = Z; \
726#define YMAJOR_PLOT(X,Y) \
727 pbx[count] = X; pbx[count+1] = X+1; \
728 pby[count] = Y; pby[count+1] = Y; \
729 pbz[count] = Z; pbz[count+1] = Z; \
769 if (
ctx->Line.StippleFlag) {
781 pbs[count] = s0 / w0; \
782 pbt[count] = t0 / w0; \
783 pbu[count] = u0 / w0; \
799 pbs[count] = s0 / w0; \
800 pbt[count] = t0 / w0; \
801 pbu[count] = u0 / w0; \
829 if (
ctx->Line.StippleFlag) {
834#define INTERP_ALPHA 1
843 pbs[count] = s0 / w0; \
844 pbt[count] = t0 / w0; \
845 pbu[count] = u0 / w0; \
846 pbr[count] = FixedToInt(r0); \
847 pbg[count] = FixedToInt(g0); \
848 pbb[count] = FixedToInt(b0); \
849 pba[count] = FixedToInt(a0); \
859#define INTERP_ALPHA 1
867 pbs[count] = s0 / w0; \
868 pbt[count] = t0 / w0; \
869 pbu[count] = u0 / w0; \
870 pbr[count] = FixedToInt(r0); \
871 pbg[count] = FixedToInt(g0); \
872 pbb[count] = FixedToInt(b0); \
873 pba[count] = FixedToInt(a0); \
908 if (
ctx->Driver.LineFunc) {
910 ctx->Driver.LineFunc =
ctx->Driver.LineFunc;
912 else if (
ctx->Texture.Enabled) {
920 else if (
ctx->Line.Width!=1.0 ||
ctx->Line.StippleFlag
921 ||
ctx->Line.SmoothFlag ||
ctx->Texture.Enabled) {
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void gl_error(GLcontext *ctx, GLenum error, const char *s)
void gl_LineStipple(GLcontext *ctx, GLint factor, GLushort pattern)
static void flat_rgba_z_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void smooth_rgba_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void smooth_rgba_z_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void null_line(GLcontext *ctx, GLuint v1, GLuint v2, GLuint pv)
void gl_LineWidth(GLcontext *ctx, GLfloat width)
static void feedback_line(GLcontext *ctx, GLuint v1, GLuint v2, GLuint pv)
static void general_flat_rgba_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void flat_ci_z_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void general_smooth_rgba_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void general_flat_ci_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void general_smooth_ci_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void smooth_textured_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pv)
static void smooth_ci_z_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
void gl_set_line_function(GLcontext *ctx)
static void flat_rgba_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void flat_ci_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
static void select_line(GLcontext *ctx, GLuint v1, GLuint v2, GLuint pv)
static void flat_textured_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pv)
static void smooth_ci_line(GLcontext *ctx, GLuint vert0, GLuint vert1, GLuint pvert)
void gl_feedback_vertex(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w, const GLfloat color[4], GLfloat index, const GLfloat texcoord[4])
void gl_update_hitflag(GLcontext *ctx, GLfloat z)
#define FEEDBACK_TOKEN(CTX, T)
#define GL_LINE_RESET_TOKEN
#define GL_INVALID_OPERATION
GLuint GLuint GLsizei count
GLint GLint GLsizei width
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint GLdouble GLdouble w2
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint GLdouble w1
GLfloat GLfloat GLfloat v2
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint factor
#define INSIDE_BEGIN_END(CTX)
#define PB_SET_INDEX(CTX, PB, I)
#define PB_CHECK_FLUSH(CTX, PB)
#define PB_SET_COLOR(CTX, PB, R, G, B, A)
#define CLAMP(f, min, max)
struct vertex_buffer * VB
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
_Inout_ PERBANDINFO * pbi