public static void FillRect(CGContext context, RectangleF rect, CGColor color) { context.SaveState(); context.AddRect(rect); context.Clip(); context.SetFillColor(color); context.FillRect(rect); context.RestoreState(); }
void RenderPixels(CGContext context, int x, int y, Edge edge32, Edge edge13, Edge edge21, int w1, int w2, int w3) { //VertexInterpoliation = A * x + B * y + C; // float alpha = (edge32.A * x + edge32.B * y + edge32.C) * edge32.VertexFactor; // float beta = (edge13.A * x + edge13.B * y + edge13.C) * edge13.VertexFactor; // float gamma = (edge21.A * x + edge21.B * y + edge21.C) * edge21.VertexFactor; // Determine barycentric coordinates float alpha = (float)(w1 * edge32.VertexFactor); float beta = (float)(w2 * edge13.VertexFactor); float gamma = (float)(w3 * edge21.VertexFactor); GradientLerp3 (alpha, beta, gamma); // Set the color context.SetFillColor (colorOutput [0], colorOutput [1], colorOutput [2], colorOutput [3]); // Set our pixel location pixelRect.X = x; pixelRect.Y = y; // Fill the pixel context.FillRect (pixelRect); }
/** * This is fill of hackish stuff. * Thought this was going to be easier but that just did not work out. **/ protected void HatchSphere(CGContext context) { var hatchSize = getHatchWidth (hatchStyle); var lineWidth = getLineWidth (hatchStyle); initializeContext(context, hatchSize, false); /* draw background in fore ground color*/ drawBackground (context, backColor, hatchSize, hatchSize); context.SetStrokeColor(foreColor.ToCGColor()); context.SetFillColor(foreColor.ToCGColor()); context.SetLineWidth(1); context.SetLineCap(CGLineCap.Square); // Initialize work rectangle RectangleF rect = new RectangleF(0,0,1,1); float quad = hatchSize / 2.0f; // Left lower quad rect.Width = quad; rect.Height = quad; rect.X = 0; rect.Y = 0; context.StrokeRect(rect); // right upper quad rect.Width = quad; rect.Height = quad; rect.X = quad; rect.Y = quad; context.StrokeRect(rect); // left upper quad rect.Width = quad; rect.Height = quad; rect.X = 0; rect.Y = quad + 1; context.FillRect(rect); // right lower quod rect.Width = quad; rect.Height = quad; rect.X = quad + 1; rect.Y = 0; context.FillRect(rect); // Now we fill in some corner bits with background // This is a bad hack but now sure what else to do context.SetFillColor(backColor.ToCGColor()); rect.Height = 1; rect.Width = 1; rect.X = 0; rect.Y = 0; setPixels(context, rect); rect.X = 0; rect.Y = quad; setPixels(context, rect); rect.X = 0; rect.Y = quad; setPixels(context, rect); rect.X = quad; rect.Y = 0; setPixels(context, rect); rect.X = quad; rect.Y = quad; setPixels(context, rect); rect.X = quad; rect.Y = hatchSize; setPixels(context, rect); rect.X = hatchSize; rect.Y = 0; setPixels(context, rect); rect.X = hatchSize; rect.Y = quad; setPixels(context, rect); rect.X = hatchSize; rect.Y = hatchSize; setPixels(context, rect); // Now for the fake shiny thingys hack // Probably could use a line here but it is already // so hacky I will just use this. rect.X = 5; rect.Y = 3; setPixels(context, rect); rect.X = 6; rect.Y = 3; setPixels(context, rect); rect.X = 1; rect.Y = 7; setPixels(context, rect); rect.X = 2; rect.Y = 7; setPixels(context, rect); }
void drawBackground(CGContext context, Color color, float width, float height) { context.SetFillColor(color.ToCGColor()); context.FillRect(new RectangleF(HALF_PIXEL_X, HALF_PIXEL_Y, width+HALF_PIXEL_X, height+HALF_PIXEL_Y)); context.FillPath(); }
void setPixels(CGContext context, RectangleF rect) { context.FillRect(rect); }