added _swrast_put_row()
This commit is contained in:
@@ -1474,3 +1474,37 @@ _swrast_get_values(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
(GLubyte *) values + inStart * valueSize);
|
(GLubyte *) values + inStart * valueSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for gl_renderbuffer::PutRow() which does clipping.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
_swrast_put_row(GLcontext *ctx, struct gl_renderbuffer *rb,
|
||||||
|
GLuint count, GLint x, GLint y,
|
||||||
|
const GLvoid *values, GLuint valueSize)
|
||||||
|
{
|
||||||
|
GLint skip = 0;
|
||||||
|
|
||||||
|
if (y < 0 || y >= rb->Height)
|
||||||
|
return; /* above or below */
|
||||||
|
|
||||||
|
if (x + (GLint) count <= 0 || x >= rb->Width)
|
||||||
|
return; /* entirely left or right */
|
||||||
|
|
||||||
|
if (x + count > rb->Width) {
|
||||||
|
/* right clip */
|
||||||
|
GLint clip = x + count - rb->Width;
|
||||||
|
count -= clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x < 0) {
|
||||||
|
/* left clip */
|
||||||
|
skip = -x;
|
||||||
|
x = 0;
|
||||||
|
count -= skip;
|
||||||
|
}
|
||||||
|
|
||||||
|
rb->PutRow(ctx, rb, count, x, y,
|
||||||
|
(const GLubyte *) values + skip * valueSize, NULL);
|
||||||
|
}
|
||||||
|
@@ -72,4 +72,9 @@ _swrast_get_values(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
GLuint count, const GLint x[], const GLint y[],
|
GLuint count, const GLint x[], const GLint y[],
|
||||||
void *values, GLuint valueSize);
|
void *values, GLuint valueSize);
|
||||||
|
|
||||||
|
extern void
|
||||||
|
_swrast_put_row(GLcontext *ctx, struct gl_renderbuffer *rb,
|
||||||
|
GLuint count, GLint x, GLint y,
|
||||||
|
const GLvoid *values, GLuint valueSize);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user