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

  1. /* $Id: api_validate.c,v 1.7 2002/10/24 23:57:19 brianp Exp $ */
  2.  
  3. /*
  4.  * Mesa 3-D graphics library
  5.  * Version:  4.1
  6.  *
  7.  * Copyright (C) 1999-2002  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. #include "glheader.h"
  28. #include "api_validate.h"
  29. #include "context.h"
  30. #include "imports.h"
  31. #include "mtypes.h"
  32. #include "state.h"
  33.  
  34.  
  35. GLboolean
  36. _mesa_validate_DrawElements(GLcontext *ctx,
  37.                 GLenum mode, GLsizei count, GLenum type,
  38.                 const GLvoid *indices)
  39. {
  40.    ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx,  GL_FALSE);
  41.  
  42.    if (count <= 0) {
  43.       if (count < 0)
  44.      _mesa_error(ctx, GL_INVALID_VALUE, "glDrawElements(count)" );
  45.       return GL_FALSE;
  46.    }
  47.  
  48.    if (mode < 0 ||
  49.        mode > GL_POLYGON) {
  50.       _mesa_error(ctx, GL_INVALID_ENUM, "glDrawArrays(mode)" );
  51.       return GL_FALSE;
  52.    }
  53.  
  54.    if (type != GL_UNSIGNED_INT &&
  55.        type != GL_UNSIGNED_BYTE &&
  56.        type != GL_UNSIGNED_SHORT)
  57.    {
  58.       _mesa_error(ctx, GL_INVALID_ENUM, "glDrawElements(type)" );
  59.       return GL_FALSE;
  60.    }
  61.  
  62.    if (ctx->NewState)
  63.       _mesa_update_state( ctx );
  64.  
  65.    if (ctx->Array.Vertex.Enabled
  66.        || (ctx->VertexProgram.Enabled && ctx->Array.VertexAttrib[0].Enabled))
  67.       return GL_TRUE;
  68.    else
  69.       return GL_FALSE;
  70.  
  71.    return GL_TRUE;
  72. }
  73.  
  74.  
  75. GLboolean
  76. _mesa_validate_DrawRangeElements(GLcontext *ctx, GLenum mode,
  77.                  GLuint start, GLuint end,
  78.                  GLsizei count, GLenum type,
  79.                  const GLvoid *indices)
  80. {
  81.    ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
  82.  
  83.    if (count <= 0) {
  84.       if (count < 0)
  85.      _mesa_error(ctx, GL_INVALID_VALUE, "glDrawElements(count)" );
  86.       return GL_FALSE;
  87.    }
  88.  
  89.    if (mode < 0 || mode > GL_POLYGON) {
  90.       _mesa_error(ctx, GL_INVALID_ENUM, "glDrawArrays(mode)" );
  91.       return GL_FALSE;
  92.    }
  93.  
  94.    if (end < start) {
  95.       _mesa_error(ctx, GL_INVALID_VALUE, "glDrawRangeElements(end<start)");
  96.       return GL_FALSE;
  97.    }
  98.  
  99.    if (type != GL_UNSIGNED_INT &&
  100.        type != GL_UNSIGNED_BYTE &&
  101.        type != GL_UNSIGNED_SHORT) {
  102.       _mesa_error(ctx, GL_INVALID_ENUM, "glDrawElements(type)" );
  103.       return GL_FALSE;
  104.    }
  105.  
  106.    if (ctx->NewState)
  107.       _mesa_update_state( ctx );
  108.  
  109.    if (ctx->Array.Vertex.Enabled
  110.        || (ctx->VertexProgram.Enabled && ctx->Array.VertexAttrib[0].Enabled))
  111.       return GL_TRUE;
  112.    else
  113.       return GL_FALSE;
  114. }
  115.  
  116.  
  117.  
  118. GLboolean
  119. _mesa_validate_DrawArrays(GLcontext *ctx,
  120.               GLenum mode, GLint start, GLsizei count)
  121. {
  122.    ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
  123.  
  124.    if (count<0) {
  125.       _mesa_error(ctx, GL_INVALID_VALUE, "glDrawArrays(count)" );
  126.       return GL_FALSE;
  127.    }
  128.  
  129.    if (mode < 0 || mode > GL_POLYGON) {
  130.       _mesa_error(ctx, GL_INVALID_ENUM, "glDrawArrays(mode)" );
  131.       return GL_FALSE;
  132.    }
  133.  
  134.    if (ctx->NewState)
  135.       _mesa_update_state( ctx );
  136.  
  137.    if (ctx->Array.Vertex.Enabled
  138.        || (ctx->VertexProgram.Enabled && ctx->Array.VertexAttrib[0].Enabled))
  139.       return GL_TRUE;
  140.    else
  141.       return GL_FALSE;
  142. }
  143.