blob: 6058b2cadeb37e9f46d23088fcb43e0678c4cc07 [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2009, 2018 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.rj.graphic.core;
import java.util.List;
/**
* An RGraphic represents the client side of a graphic (device)
* in R.
* <p>
* The attributes devId ({@link #getDevId()}) and active ({@link #isActive()},
* {@link Listener#activated()}, {@link Listener#deactivated()}) are equivalent
* to the device id and active device in R.</p>
* <p>
* A graphic has a sequence of graphic instructions describing how to paint the
* graphic ({@link #getInstructions()}). If not empty, the first instruction is
* of the type {@link RGraphicInstruction#INIT INIT}, followed by setting and
* drawing instructions. Settings are valid for all following drawing instructions
* until it is changed by a new setting instruction of the same type.</p>
*/
public interface RGraphic {
interface Listener {
void activated();
void deactivated();
void drawingStarted();
void drawingStopped();
}
/**
* Returns the device id of the graphic in R. Note that the device number presented in public
* R functions is this device id + 1.
*
* @return the device id
*/
int getDevId();
/**
* Returns if graphic device of this graphic is the active device in R.
*
* @return <code>true</code> if it is active, otherwise <code>false</code>
*/
boolean isActive();
List<? extends RGraphicInstruction> getInstructions();
void addListener(Listener listener);
void removeListener(Listener listener);
}