/* * @(#)GanttTaskPainter.java * * Copyright 2002 EGANTT LLP. All rights reserved. * PROPRIETARY/QPL. Use is subject to license terms. */ package com.egantt.drawing.painter.gantt; import com.egantt.awt.graphics.GraphicsContext; import com.egantt.drawing.DrawingPainter; import com.egantt.model.drawing.painter.PainterState; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.Shape; public class GanttTaskPainter implements DrawingPainter { // ________________________________________________________________________ public Shape paint(Object key, Graphics g, Rectangle bounds, PainterState state, GraphicsContext context) { int height = Math.max(bounds.height, 1) / 2; g.fillRect(bounds.x, bounds.y, bounds.width, height); // |--. <-- xPoints[0], yPoints[0] : xPoints[2], yPoints[2] // | / // |/ <-- xPoints[1], yPoints[1] int offset = (int) Math.round(height * 1.8); int top = height; int xPoints [] = new int[3]; int yPoints [] = new int[3]; xPoints[0] = bounds.x; yPoints[0] = bounds.y + top; xPoints[1] = bounds.x + (offset /2); yPoints[1] = bounds.y + height + top; xPoints[2] = bounds.x + offset; yPoints[2] = bounds.y + top; g.fillPolygon(xPoints,yPoints, xPoints.length); // as we can draw outside of the boundary x2 should equal width always // .--| <-- xpoints [0] , yPoints[0] : xPoints[2], yPoints[2] // \ | // \ | // \| <-- xPoints [1], yPoints[1] xPoints[0] = bounds.x + bounds.width - offset ; yPoints[0] = bounds.y + top; xPoints[1] = bounds.x + bounds.width - (offset /2); yPoints[1] = bounds.y + height + top; xPoints[2] = bounds.x + bounds.width; yPoints[2] = bounds.y + top; g.fillPolygon(xPoints, yPoints, xPoints.length); return bounds; } public long width(Object key, Graphics g, Rectangle bounds, GraphicsContext context) { return bounds.width; } }