static void GLBlendSolidHSpan( int x1, int len, bool isFillMode, AggCoordList3f lineBuffer, int srcColorAlpha, byte[] covers, int coversIndex) { if (isFillMode) { unchecked { int xpos = x1; switch (len) { case 1: { lineBuffer.AddCoord(xpos - 1, 0); //just one pix , //alpha change *** int alpha = ((srcColorAlpha) * ((covers[coversIndex]) + 1)) >> 8; //single px lineBuffer.AddCoord(xpos, alpha); xpos++; coversIndex++; //lineBuffer.AddCoord(xpos, 0); } break; default: { lineBuffer.AddCoord(xpos - 1, 0); int alpha = 0; do { //alpha change *** alpha = ((srcColorAlpha) * ((covers[coversIndex]) + 1)) >> 8; //single point lineBuffer.AddCoord(xpos, alpha); xpos++; coversIndex++; }while (--len != 0); //close with single px lineBuffer.AddCoord(xpos, 0); } break; } } } else { unchecked { int xpos = x1; switch (len) { case 1: { lineBuffer.AddCoord(xpos - 1, 0); //just one pix , //alpha change *** int alpha = ((srcColorAlpha) * ((covers[coversIndex]) + 1)) >> 8; //single px lineBuffer.AddCoord(xpos, alpha); xpos++; coversIndex++; //lineBuffer.AddCoord(xpos, 0); } break; default: { lineBuffer.AddCoord(xpos - 1, 0); int alpha = 0; do { //alpha change *** alpha = ((srcColorAlpha) * ((covers[coversIndex]) + 1)) >> 8; //single point lineBuffer.AddCoord(xpos, alpha); xpos++; coversIndex++; }while (--len != 0); //close with single px lineBuffer.AddCoord(xpos, 0); } break; } } } }
static void GLBlendHLine(int x1, int x2, bool isFillMode, AggCoordList3f lineBuffer, int srcColorAlpha, byte cover) { //if (color.A == 0) { return; } int len = x2 - x1 + 1; int alpha = (((int)(srcColorAlpha) * (cover + 1)) >> 8); if (isFillMode) { //same alpha... if (alpha == BASE_MASK) { switch (len) { case 0: { } break; case 1: { //single px lineBuffer.AddCoord(x1 - 1, alpha); lineBuffer.AddCoord(x1, alpha); lineBuffer.AddCoord(x1 + 1, alpha); } break; default: { //var c = PixelFarm.Drawing.Color.FromArgb(alpha, color).ToARGB(); //lineBuffer.AddVertex(new VertexV2S1Cvr(x1, y, alpha)); //lineBuffer.AddVertex(new VertexV2S1Cvr(x2 + 1, y, alpha)); lineBuffer.AddCoord(x1 - 1, alpha); lineBuffer.AddCoord(x1, alpha); lineBuffer.AddCoord(x2 + 1, alpha); //lineBuffer.AddCoord(x2 + 2, 0); //lineBuffer.AddCoord(x2 + 2, 0); } break; } } else { //same alpha lineBuffer.AddCoord(x1 - 1, alpha); lineBuffer.AddCoord(x1, alpha); lineBuffer.AddCoord(x2 + 1, alpha); //lineBuffer.AddCoord(x2 + 2, 0); } } else { //same alpha... if (alpha == BASE_MASK) { switch (len) { case 0: { } break; case 1: { //single px lineBuffer.AddCoord(x1 - 1, 0); lineBuffer.AddCoord(x1, alpha); //lineBuffer.AddCoord(x1 + 1, alpha); } break; default: { //var c = PixelFarm.Drawing.Color.FromArgb(alpha, color).ToARGB(); //lineBuffer.AddVertex(new VertexV2S1Cvr(x1, y, alpha)); //lineBuffer.AddVertex(new VertexV2S1Cvr(x2 + 1, y, alpha)); lineBuffer.AddCoord(x1 - 1, 0); lineBuffer.AddCoord(x1, alpha); lineBuffer.AddCoord(x2 + 1, alpha); lineBuffer.AddCoord(x2 + 2, 0); } break; } } else { //same alpha lineBuffer.AddCoord(x1 - 1, 0); lineBuffer.AddCoord(x1, alpha); lineBuffer.AddCoord(x2 + 1, alpha); lineBuffer.AddCoord(x2 + 2, 0); } } }