/* * $Id: Window6.java 536 2008-02-19 06:03:27Z weiju $ * * Created on 2006/02/23 * Copyright 2005-2008 by Wei-ju Wu * This file is part of The Z-machine Preservation Project (ZMPP). * * ZMPP is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ZMPP is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ZMPP. If not, see <http://www.gnu.org/licenses/>. */ package org.zmpp.vm; import org.zmpp.blorb.BlorbImage; public interface Window6 { static final int PROPERTY_Y_COORD = 0; static final int PROPERTY_X_COORD = 1; static final int PROPERTY_Y_SIZE = 2; static final int PROPERTY_X_SIZE = 3; static final int PROPERTY_Y_CURSOR = 4; static final int PROPERTY_X_CURSOR = 5; static final int PROPERTY_LEFT_MARGIN = 6; static final int PROPERTY_RIGHT_MARGIN = 7; static final int PROPERTY_INTERRUPT_ROUTINE = 8; static final int PROPERTY_INTERRUPT_COUNT = 9; static final int PROPERTY_TEXTSTYLE = 10; static final int PROPERTY_COLOURDATA = 11; static final int PROPERTY_FONT_NUMBER = 12; static final int PROPERTY_FONT_SIZE = 13; static final int PROPERTY_ATTRIBUTES = 14; static final int PROPERTY_LINE_COUNT = 15; /** * Draws the specified picture at the given position. * * @param picture the picture data * @param y the y coordinate * @param x the x coordinate */ void drawPicture(BlorbImage picture, int y, int x); /** * Clears the area of the specified picture at the given position. * * @param picture the picture * @param y the y coordinate * @param x the x coordinate */ void erasePicture(BlorbImage picture, int y, int x); /** * Moves the window to the specified coordinates in pixels, (1, 1) being the * top left. * * @param y the y coordinate * @param x the x coordinate */ void move(int y, int x); /** * Sets window size in pixels. * * @param height the height in pixels * @param width the width in pixels */ void setSize(int height, int width); /** * Sets the window style. The <i>styleflags</i> parameter is a bitmask * specified as follows: - Bit 0: keep text within margins - Bit 1: scroll * when at bottom - Bit 2: copy text to transcript stream (stream 2) - Bit * 3: word wrapping * * The <i>operation</i> parameter is specified as this: - 0: set style flags * to the specified mask - 1: set the bits supplied - 2: clear the bits * supplied - 3: reverse the bits supplied * * @param styleflags the style flags * @param op the operations */ void setStyle(int styleflags, int operation); /** * Sets the window margins in pixels. If the cursor is overtaken by the new * margins, set it to the new left margin. * * @param left the left margin * @param right the right margin */ void setMargins(int left, int right); /** * Returns the specified window property. 0 y coordinate 6 left margin size * 12 font number 1 x coordinate 7 right margin size 13 font size 2 y size 8 * newline interrupt routine 14 attributes 3 x size 9 interrupt countdown 15 * line count 4 y cursor 10 text style 5 x cursor 11 colour data * * @param propertynum the property number * @return the property value */ int getProperty(int propertynum); /** * Sets the specified window property. * * @param propertynum the property number * @param value the value */ void putProperty(int propertynum, short value); /** * Scrolls the window by the specified amount of pixels, negative values * scroll down, positive scroll up. * * @param pixels the number of pixels */ void scroll(int pixels); }