Browse Source

added alternate glBitmap code (disabled)

tags/mesa_4_1
Brian Paul 23 years ago
parent
commit
09700ee358
1 changed files with 112 additions and 1 deletions
  1. 112
    1
      src/mesa/swrast/s_bitmap.c

+ 112
- 1
src/mesa/swrast/s_bitmap.c View File

/* $Id: s_bitmap.c,v 1.14 2002/02/02 17:24:11 brianp Exp $ */
/* $Id: s_bitmap.c,v 1.15 2002/02/15 03:41:00 brianp Exp $ */


/* /*
* Mesa 3-D graphics library * Mesa 3-D graphics library
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */


/**
* \file swrast/s_bitmap.c
* \brief glBitmap rendering.
* \author Brian Paul
*/


#include "glheader.h" #include "glheader.h"
#include "image.h" #include "image.h"


RENDER_FINISH(swrast,ctx); RENDER_FINISH(swrast,ctx);
} }


#if 0
/*
* XXX this is another way to implement Bitmap. Use horizontal runs of
* fragments, initializing the mask array to indicate which fragmens to
* draw or skip.
*/

void
_swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
GLsizei width, GLsizei height,
const struct gl_pixelstore_attrib *unpack,
const GLubyte *bitmap )
{
SWcontext *swrast = SWRAST_CONTEXT(ctx);
GLint row, col;
struct sw_span span;

ASSERT(ctx->RenderMode == GL_RENDER);
ASSERT(bitmap);

RENDER_START(swrast,ctx);

if (SWRAST_CONTEXT(ctx)->NewState)
_swrast_validate_derived( ctx );

INIT_SPAN(span);
span.arrayMask |= SPAN_MASK; /* we'll init span.mask[] */
span.x = px;
span.y = py;
span.end = width;
if (ctx->Visual.rgbMode) {
span.interpMask |= SPAN_RGBA;
span.red = FloatToFixed(ctx->Current.RasterColor[0] * CHAN_MAXF);
span.green = FloatToFixed(ctx->Current.RasterColor[1] * CHAN_MAXF);
span.blue = FloatToFixed(ctx->Current.RasterColor[2] * CHAN_MAXF);
span.alpha = FloatToFixed(ctx->Current.RasterColor[3] * CHAN_MAXF);
span.redStep = span.greenStep = span.blueStep = span.alphaStep = 0;
}
else {
span.interpMask |= SPAN_INDEX;
span.index = ChanToFixed(ctx->Current.RasterIndex);
span.indexStep = 0;
}

if (ctx->Depth.Test)
_mesa_span_default_z(ctx, &span);
if (ctx->Fog.Enabled)
_mesa_span_default_fog(ctx, &span);

for (row=0; row<height; row++, span.y++) {
const GLubyte *src = (const GLubyte *) _mesa_image_address( unpack,
bitmap, width, height, GL_COLOR_INDEX, GL_BITMAP, 0, row, 0 );

if (unpack->LsbFirst) {
/* Lsb first */
GLubyte mask = 1U << (unpack->SkipPixels & 0x7);
for (col=0; col<width; col++) {
span.mask[col] = (*src & mask) ? GL_TRUE : GL_FALSE;
if (mask == 128U) {
src++;
mask = 1U;
}
else {
mask = mask << 1;
}
}

if (ctx->Visual.rgbMode)
_mesa_write_rgba_span(ctx, &span, GL_BITMAP);
else
_mesa_write_index_span(ctx, &span, GL_BITMAP);

/* get ready for next row */
if (mask != 1)
src++;
}
else {
/* Msb first */
GLubyte mask = 128U >> (unpack->SkipPixels & 0x7);
for (col=0; col<width; col++) {
span.mask[col] = (*src & mask) ? GL_TRUE : GL_FALSE;
if (mask == 1U) {
src++;
mask = 128U;
}
else {
mask = mask >> 1;
}
}

if (ctx->Visual.rgbMode)
_mesa_write_rgba_span(ctx, &span, GL_BITMAP);
else
_mesa_write_index_span(ctx, &span, GL_BITMAP);

/* get ready for next row */
if (mask != 128)
src++;
}
}

RENDER_FINISH(swrast,ctx);
}
#endif

Loading…
Cancel
Save