/**************************************************************************** * Copyright (c) 2008, 2009 Jeremy Dowdall * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Jeremy Dowdall <jeremyd@aspencloud.com> - initial API and implementation *****************************************************************************/ package org.eclipse.nebula.cwt.svg; import org.eclipse.swt.graphics.GC; abstract class SvgPaint { enum PaintType { None, Current, Color, Link } SvgGraphic parent; GC gc; SvgGradient paintServer; PaintType type = null; String linkId = null; Integer color = null; Float opacity = null; SvgPaint(SvgGraphic parent) { this.parent = parent; } abstract void apply(); public void create(GC gc) { if(parent instanceof SvgShape) { this.gc = gc; if(linkId != null) { SvgElement def = parent.getElement(linkId); if(def instanceof SvgGradient) { SvgGradient gradient = (SvgGradient) def; SvgShape shape = (SvgShape) parent; paintServer = gradient; paintServer.create(shape, gc); } } } else { throw new UnsupportedOperationException("only shapes can be painted..."); //$NON-NLS-1$ } } public boolean dispose() { if(paintServer != null) { paintServer.dispose(); return true; } return false; } public boolean isPaintable() { return type != PaintType.None; } }