o1.gui
Members list
Packages
Type members
Classlikes
The Align singleton provides tools for describing the horizontal and vertical alignment of graphical elements.
An Animation object has an iterable sequence of Pics which it can show in a separate window (a simple View).
An Animation object has an iterable sequence of Pics which it can show in a separate window (a simple View).
Parameters
- atEnd
-
what should happen once the animation reaches the final Pic
- frameRate
-
a target speed (in Pics per second), which the
Animationwill roughly observe if possible - frames
-
the Pics that the animation consists of, in order; they should be identical in size
- terminateOnClose
-
whether the entire application should exit when the animation window is closed
Attributes
- Companion
- object
- Supertypes
- Self type
This companion object of class Animation provides a couple of convenience methods (show, generate) for starting animations and an enumeration (AtEnd) for use with the class.
This companion object of class Color provides methods for creating new Color objects. There is also a small selection of related utility methods and constants.
This companion object of class Color provides methods for creating new Color objects. There is also a small selection of related utility methods and constants.
For many constants of type Color that represent different preset colors, see o1.gui.colors.
This object has an alias in the top-level package o1, so it’s accessible to students simply via import o1.*.
Attributes
Each instance of this class represents a color. The class uses the RGB color scheme: each color is a combination of a red, green, and blue components; there’s also a fourth component of opacity. Color objects are immutable.
Each instance of this class represents a color. The class uses the RGB color scheme: each color is a combination of a red, green, and blue components; there’s also a fourth component of opacity. Color objects are immutable.
You don’t instantiate Color directly; instead, you create Colors with the methods on the Color companion object (e.g., Color(200, 150, 255)) or use one of the named color constants in o1.gui.colors. There are also a few methods in this class that returns new Color objects defined in terms of existing ones (e.g., lighter, edit).
This class has an alias in the top-level package o1, so it’s accessible to students simply via import o1.*.
Parameters
- blue
-
the amount of blue in the color, between Color.Min and Color.Max; that is, 0–255
- green
-
the amount of green in the color, between Color.Min and Color.Max; that is, 0–255
- opacity
-
the color’s opacity, between Color.Min and Color.Max; that is, 0–255
- presetName
-
the name of a color contant in “regular form”, i.e., with spaces and largely in lower case (e.g., "saddle blue", "Irish green")
- red
-
the amount of red in the color, between Color.Min and Color.Max; that is, 0–255
Attributes
- Companion
- object
- Supertypes
Giving this convenience trait to a Swing GUI frame will place the frame at (120, 120) and set it as unresizeable.
Giving this convenience trait to a Swing GUI frame will place the frame at (120, 120) and set it as unresizeable.
Attributes
- Supertypes
- Known subtypes
-
class SimpleFrame
This object provides convenience methods for displaying messages and reading user input via simple Swing dialogs.
Give this convenience trait to a Swing GUI frame to make it close when the Escape key is pressed.
A supertype for objects that “can be used as paint” to define the fill color(s) of a shape. The simplest sort of fill is a Color, but gradients and other more complex fills may also be defined.
This companion object of class Fill provides a singleton object for the special case where there is no fill at all.
The primary purpose of this companion object of class Pic is to provide methods for creating new Pic instances: (apply, generate, circle, etc. There is also a small selection of related utility methods.
The primary purpose of this companion object of class Pic is to provide methods for creating new Pic instances: (apply, generate, circle, etc. There is also a small selection of related utility methods.
This object has an alias in the top-level package o1, so it’s accessible to students simply via import o1.*. The shape-creating methods of this object (such as circle) are also available as functions in package o1.
Attributes
Each instance of this class represents a picture: an immutable two-dimensional image.
Each instance of this class represents a picture: an immutable two-dimensional image.
You don’t instantiate Pic directly; instead, you create Pics with the methods on the Pic companion object. For instance, you can:
- load existing images:
Pic("mypic.png")orPic("http://address.of/mypic.png")), - create
Pics of shapes (e.g.,circle(150, Red)orstar(100, Black)); or - generate the pixels of a
Picwith a function.
Moreover, many of the methods of a Pic object create and return new Pics that represent combinations or transformations of existing Pics.
This class has an alias in the top-level package o1, so it’s accessible to students simply via import o1.*.
The examples below illustrate a few of the methods (assuming the above import):
val background = rectangle(400, 300, Red)
val rotatedSquare = square(50, Blue).clockwise(30)
val squareAgainstBg = background.place(rotatedSquare, Pos(100, 100))
squareAgainstBg.show()
val ladybug = Pic("ladybug.png").scaleTo(100).flipHorizontal
val combination = circle(100, Red).leftOf(ladybug)
val part = combination.crop(Pos(10, 10), 180, 80)
val negative = part.transformColors( _.negative )
negative.show()
Some of the methods of a Pic that use Pos objects or plain x and y coordinates to indicate positions within the Pic (e.g., place and crop above). All these methods consider the origo to be at the top left-hand corner or the Pic, with x values increasing downwards and y values rightwards. The coordinates are in pixels.
Each image has an anchor that defines where it connects to other Pics. By default, the anchor is Center; for example, the place method call above puts the center of the square at Pos(100, 100) within the background.
Here is a list of the main types of operations as methods on a Pic, and examples of each type:
-
Combining
Pics by positioning them relative to each other:above,below,leftOf,rightOf,onto,against,place. -
Rotations (*):
clockwise,counterclockwise -
Changing size (*):
scaleBy,scaleTo -
Selecting and moving pixels (**):
crop,shift,flipHorizontal,flipVertical -
Examining and manipulating individual pixels (**):
pixelColor,transformXY,transformColors,combine -
Convenience methods for experimentation and debugging:
show,hide.
Notes on implementation and efficiency:
Internally, a Pic stores its contents either as vector-based graphics, as a bitmap (raster), or as a combination of the two. By design, that internal representation is meant to be largely opaque to the user of the Pic class: students in O1 working on O1’s standard assignments generally shouldn’t need to know or care about it. Nevertheless, whether a particular Pic is stored in vector or bitmap form does have a very substantial effect on efficiency in some contexts; Pic, like the rest of O1Library, is not designed for high-performance graphics.
Some users of this class may wish to know the following:
-
Pics start out in either vector form or bitmap form, depending on which method created them. Specifically, the shape-creating methods (likerectangleandcircle). producePics in vector form. -
No operation on a
Picever changes an already rasterized bitmap into vector graphics. -
Some operations always produce a rasterized
Pic. These are marked with a double asterisk (**) in the list above. Some operations sometimes produce rasterizedPics but may retain the vector-based representation in simple cases. These are marked with a single asterisk (*). -
Operations like
leftOfcan produce aPicthat is stored as a combination of a vector graphic and a bitmap. -
You can call freeze to force rasterization.
Attributes
- Companion
- object
- Supertypes
Inherit this class to obtain a Swing GUI frame that has the DefaultFrameSettings and the given title.
Inherit this class to obtain a Swing GUI frame that has the DefaultFrameSettings and the given title.
Attributes
- Supertypes
A Stroke is a style for drawing shape outlines and other lines. A Stroke object defines, among other things, the color and width of lines drawn using the stroke.
A Stroke is a style for drawing shape outlines and other lines. A Stroke object defines, among other things, the color and width of lines drawn using the stroke.
Parameters
- cap
-
the style of the cap (end point) for lines drawn using this stroke; the default is a square cap.
- fill
-
a fill style for lines drawn using this stroke; this can be a Color or a gradient, for example
- join
-
the style in which lines drawn using this stroke join up with each other; the default is a miter join
- onTop
-
a value that affects filled shapes that have an outline drawn using this stroke: if
true, the outline will be drawn on top of the filled shape and fully visible; iffalse, the outline will be below the fill and partially invisible. Defaults totrue. - thickness
-
the width of lines drawn using this stroke; defaults to 1
Attributes
- Supertypes
- Known subtypes
-
object None
Give this convenience trait to a Swing GUI frame to make it terminate the application when closed.
This object holds miscellaneous utilities (traits, constants, etc.) that can be used in combinations with Views. These utilities are generic to the o1.gui.mutable and o1.gui.immutable View variants.
This object holds miscellaneous utilities (traits, constants, etc.) that can be used in combinations with Views. These utilities are generic to the o1.gui.mutable and o1.gui.immutable View variants.
Note to students: You’re unlikely to need this for anything in O1.
Attributes
- Supertypes
- Self type
-
View.type
This subpackage contains a version of Views that is not much used in O1: views to immutable domain models. In O1, the other implementation in o1.gui.mutable is more relevant.
This subpackage contains a version of Views that is not much used in O1: views to immutable domain models. In O1, the other implementation in o1.gui.mutable is more relevant.
Attributes
- Supertypes
- Self type
-
immutable.type
This subpackage contains the version of Views that we primarily use in O1: views to mutable domain models.
This subpackage contains the version of Views that we primarily use in O1: views to mutable domain models.
The top-level package o1 provides an alias to the ViewFrame class in this package, so it is available to students as View simply by importing o1.*.
There is an alternative implementation of Views in o1.gui.immutable.
Attributes
- Supertypes
- Self type
-
mutable.type
Types
The Anchor type represents anchoring points of two-dimensional elements (such as Pics) within other such elements; it is an alias for the type of the same name in o1.world.objects.
The Anchor type represents anchoring points of two-dimensional elements (such as Pics) within other such elements; it is an alias for the type of the same name in o1.world.objects.
Attributes
The Bounds type represents rectangular boundaries on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
The Bounds type represents rectangular boundaries on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
Attributes
A supertype for two-dimensional elements that have an anchoring point; this is an alias for the trait of the same name in o1.world.objects.
A supertype for two-dimensional elements that have an anchoring point; this is an alias for the trait of the same name in o1.world.objects.
Attributes
The Key type represents keys on the keyboard; it is an alias for the corresponding type in Scala’s Swing GUI library
The Key type represents keys on the keyboard; it is an alias for the corresponding type in Scala’s Swing GUI library
Attributes
The Pos type represents locations on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
The Pos type represents locations on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
Attributes
Value members
Concrete fields
The Anchor type represents anchoring points of two-dimensional elements (such as Pics) within other such elements; it is an alias for the type of the same name in o1.world.objects.
The Anchor type represents anchoring points of two-dimensional elements (such as Pics) within other such elements; it is an alias for the type of the same name in o1.world.objects.
Attributes
The Bounds type represents rectangular boundaries on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
The Bounds type represents rectangular boundaries on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
Attributes
The Key type represents keys on the keyboard; it is an alias for the corresponding type in Scala’s Swing GUI library
The Key type represents keys on the keyboard; it is an alias for the corresponding type in Scala’s Swing GUI library
Attributes
The Pos type represents locations on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
The Pos type represents locations on a two-dimensional plane; it is an alias for the class of the same name in o1.world.
