/*******************************************************************************
 * Copyright (c) 2000, 2008 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.swt.custom;

import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;

/**
 * This event is sent when an object needs to be drawn.
 *
 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
 *
 * @since 3.2
 */
public class PaintObjectEvent extends TypedEvent {

	/**
	 * the GC
	 */
	public GC gc;

	/**
	 * the x location
	 */
	public int x;

	/**
	 * the y location
	 */
	public int y;

	/**
	 * the line ascent
	 */
	public int ascent;

	/**
	 * the line descent
	 */
	public int descent;

	/**
	 * the StyleRange
	 */
	public StyleRange style;

	/**
	 * the Bullet
	 */
	public Bullet bullet;

	/**
	 * the bullet index
	 */
	public int bulletIndex;

	static final long serialVersionUID = 3906081274027192855L;

/**
 * Constructs a new instance of this class based on the
 * information in the given event.
 *
 * @param e the event containing the information
 */
public PaintObjectEvent(StyledTextEvent e) {
	super(e);
	gc = e.gc;
	x = e.x;
	y = e.y;
	ascent = e.ascent;
	descent = e.descent;
	style = e.style;
	bullet = e.bullet;
	bulletIndex = e.bulletIndex;
}
}
