home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mesa5.zip / mesa5src.zip / MesaDLL / lines.cpp < prev    next >
C/C++ Source or Header  |  2002-10-24  |  3KB  |  89 lines

  1. /* $Id: lines.c,v 1.30 2002/10/24 23:57:21 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  3.5
  6.  *
  7.  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  8.  *
  9.  * Permission is hereby granted, free of charge, to any person obtaining a
  10.  * copy of this software and associated documentation files (the "Software"),
  11.  * to deal in the Software without restriction, including without limitation
  12.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  13.  * and/or sell copies of the Software, and to permit persons to whom the
  14.  * Software is furnished to do so, subject to the following conditions:
  15.  *
  16.  * The above copyright notice and this permission notice shall be included
  17.  * in all copies or substantial portions of the Software.
  18.  *
  19.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  20.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  21.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  22.  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  23.  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  24.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25.  */
  26.  
  27.  
  28. #include "glheader.h"
  29. #include "context.h"
  30. #include "depth.h"
  31. #include "lines.h"
  32. #include "macros.h"
  33. #include "mmath.h"
  34. #include "texstate.h"
  35. #include "mtypes.h"
  36.  
  37.  
  38. void
  39. _mesa_LineWidth( GLfloat width )
  40. {
  41.    GET_CURRENT_CONTEXT(ctx);
  42.    ASSERT_OUTSIDE_BEGIN_END(ctx);
  43.  
  44.    if (width<=0.0) {
  45.       _mesa_error( ctx, GL_INVALID_VALUE, "glLineWidth" );
  46.       return;
  47.    }
  48.  
  49.    if (ctx->Line.Width == width)
  50.       return;
  51.  
  52.    FLUSH_VERTICES(ctx, _NEW_LINE);
  53.    ctx->Line.Width = width;
  54.    ctx->Line._Width = CLAMP(width,
  55.                 ctx->Const.MinLineWidth,
  56.                 ctx->Const.MaxLineWidth);
  57.  
  58.  
  59.    if (width != 1.0)
  60.       ctx->_TriangleCaps |= DD_LINE_WIDTH;
  61.    else
  62.       ctx->_TriangleCaps &= ~DD_LINE_WIDTH;
  63.  
  64.    if (ctx->Driver.LineWidth)
  65.       (*ctx->Driver.LineWidth)(ctx, width);
  66. }
  67.  
  68.  
  69.  
  70. void
  71. _mesa_LineStipple( GLint factor, GLushort pattern )
  72. {
  73.    GET_CURRENT_CONTEXT(ctx);
  74.    ASSERT_OUTSIDE_BEGIN_END(ctx);
  75.  
  76.    factor = CLAMP( factor, 1, 256 );
  77.  
  78.    if (ctx->Line.StippleFactor == factor &&
  79.        ctx->Line.StipplePattern == pattern)
  80.       return;
  81.  
  82.    FLUSH_VERTICES(ctx, _NEW_LINE);
  83.    ctx->Line.StippleFactor = factor;
  84.    ctx->Line.StipplePattern = pattern;
  85.  
  86.    if (ctx->Driver.LineStipple)
  87.       ctx->Driver.LineStipple( ctx, factor, pattern );
  88. }
  89.