Changeset 3598 for trunk/src/opengl/mesa/logic.c
- Timestamp:
- May 23, 2000, 10:41:28 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/mesa/logic.c
r2962 r3598 1 /* $Id: logic.c,v 1. 2 2000-03-01 18:49:31jeroen Exp $ */1 /* $Id: logic.c,v 1.3 2000-05-23 20:40:39 jeroen Exp $ */ 2 2 3 3 /* 4 4 * Mesa 3-D graphics library 5 * Version: 3. 15 * Version: 3.3 6 6 * 7 7 * Copyright (C) 1999 Brian Paul All Rights Reserved. … … 32 32 #include "all.h" 33 33 #else 34 #ifndef XFree86Server 35 #include <stdlib.h> 36 #else 37 #include "GL/xf86glx.h" 38 #endif 34 #include "glheader.h" 39 35 #include "alphabuf.h" 40 36 #include "types.h" … … 48 44 49 45 50 void gl_LogicOp( GLcontext *ctx, GLenum opcode ) 51 { 46 void 47 _mesa_LogicOp( GLenum opcode ) 48 { 49 GET_CURRENT_CONTEXT(ctx); 52 50 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glLogicOp"); 53 51 switch (opcode) { … … 70 68 ctx->Color.LogicOp = opcode; 71 69 ctx->NewState |= NEW_RASTER_OPS; 72 70 return; 73 71 default: 74 72 gl_error( ctx, GL_INVALID_ENUM, "glLogicOp" ); 75 73 return; 76 74 } 77 75 … … 93 91 case GL_CLEAR: 94 92 for (i=0;i<n;i++) { 95 96 97 98 99 93 if (mask[i]) { 94 index[i] = 0; 95 } 96 } 97 break; 100 98 case GL_SET: 101 99 for (i=0;i<n;i++) { 102 103 104 105 106 100 if (mask[i]) { 101 index[i] = 1; 102 } 103 } 104 break; 107 105 case GL_COPY: 108 109 106 /* do nothing */ 107 break; 110 108 case GL_COPY_INVERTED: 111 109 for (i=0;i<n;i++) { 112 113 114 115 116 110 if (mask[i]) { 111 index[i] = ~index[i]; 112 } 113 } 114 break; 117 115 case GL_NOOP: 118 116 for (i=0;i<n;i++) { 119 120 121 122 123 117 if (mask[i]) { 118 index[i] = dest[i]; 119 } 120 } 121 break; 124 122 case GL_INVERT: 125 123 for (i=0;i<n;i++) { 126 127 128 129 130 124 if (mask[i]) { 125 index[i] = ~dest[i]; 126 } 127 } 128 break; 131 129 case GL_AND: 132 130 for (i=0;i<n;i++) { 133 134 135 136 137 131 if (mask[i]) { 132 index[i] &= dest[i]; 133 } 134 } 135 break; 138 136 case GL_NAND: 139 137 for (i=0;i<n;i++) { 140 141 142 143 144 138 if (mask[i]) { 139 index[i] = ~(index[i] & dest[i]); 140 } 141 } 142 break; 145 143 case GL_OR: 146 144 for (i=0;i<n;i++) { 147 148 149 150 151 145 if (mask[i]) { 146 index[i] |= dest[i]; 147 } 148 } 149 break; 152 150 case GL_NOR: 153 151 for (i=0;i<n;i++) { 154 155 156 157 158 152 if (mask[i]) { 153 index[i] = ~(index[i] | dest[i]); 154 } 155 } 156 break; 159 157 case GL_XOR: 160 158 for (i=0;i<n;i++) { 161 162 163 164 165 159 if (mask[i]) { 160 index[i] ^= dest[i]; 161 } 162 } 163 break; 166 164 case GL_EQUIV: 167 165 for (i=0;i<n;i++) { 168 169 170 171 172 166 if (mask[i]) { 167 index[i] = ~(index[i] ^ dest[i]); 168 } 169 } 170 break; 173 171 case GL_AND_REVERSE: 174 172 for (i=0;i<n;i++) { 175 176 177 178 179 173 if (mask[i]) { 174 index[i] = index[i] & ~dest[i]; 175 } 176 } 177 break; 180 178 case GL_AND_INVERTED: 181 179 for (i=0;i<n;i++) { 182 183 184 185 186 180 if (mask[i]) { 181 index[i] = ~index[i] & dest[i]; 182 } 183 } 184 break; 187 185 case GL_OR_REVERSE: 188 186 for (i=0;i<n;i++) { 189 190 191 192 193 187 if (mask[i]) { 188 index[i] = index[i] | ~dest[i]; 189 } 190 } 191 break; 194 192 case GL_OR_INVERTED: 195 193 for (i=0;i<n;i++) { 196 197 198 199 200 194 if (mask[i]) { 195 index[i] = ~index[i] | dest[i]; 196 } 197 } 198 break; 201 199 default: 202 200 gl_error( ctx, GL_INVALID_ENUM, "gl_logic error" ); 203 201 } 204 202 } … … 379 377 { 380 378 GLubyte dest[MAX_WIDTH][4]; 381 gl_read_rgba_span( ctx, n, x, y, dest );379 gl_read_rgba_span( ctx, ctx->DrawBuffer, n, x, y, dest ); 382 380 rgba_logicop( ctx, n, mask, (GLuint *) rgba, (const GLuint *) dest ); 383 381 }
Note:
See TracChangeset
for help on using the changeset viewer.