o1.gui
Type members
Classlikes
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).
- Value parameters:
- atEnd
what should happen once the animation reaches the final Pic
- frameRate
a target speed (in Pics per second), which the
Animation
will 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
- Companion:
- object
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 Animation provides a couple of convenience methods (show, generate) for starting animations and an enumeration (AtEnd) for use with the class.
- Companion:
- 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.*
.
- Companion:
- class
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 Color
s 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.*
.
- Value 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 opacity of the color, between Color.Min and Color.Max; that is, 0–255
- red
the amount of red in the color, between Color.Min and Color.Max; that is, 0–255
- Companion:
- object
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.
This object provides convenience methods for displaying messages and reading user input via simple Swing dialogs.
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.
Give this convenience trait to a Swing GUI frame to make it close when the Escape key is pressed.
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.
- Companion:
- class
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 Pic
s 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
Pic
s of shapes (e.g.,circle(150, Red)
orstar(100, Black)
); or - generate the pixels of a
Pic
with a function.
Moreover, many of the methods of a Pic
object create and return new Pic
s that
represent combinations or transformations of existing Pic
s.
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 Pic
s. 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 of the main types of operations as methods on a Pic
, and examples of each type:
-
Combining
Pic
s 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 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:
-
Pic
s start out in either vector form or bitmap form, depending on which method created them. Specifically, the shape-creating methods (likerectangle
andcircle
). producePic
s in vector form. -
No operation on a
Pic
ever changes an already rasterized bitmap into vector graphics. (An operation such asleftOf
can produce anPic
that is stored as a combination of a vector graphic and a bitmap.) -
Some operations always produce a rasterized
Pic
. These are marked with a double asterisk (**) in the list above. Some operations sometimes produce rasterizedPic
s but may retain the vector-based representation in simple cases. These are marked with a single asterisk (*). -
You can call freeze to force rasterization.
- Value parameters:
- anchor
the anchor of the image
- Companion:
- object
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.
Give this convenience trait to a Swing GUI frame to make it terminate the application when closed.
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 View
s. 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 View
s. 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.
This subpackage contains a version of View
s 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 View
s 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 the version of View
s that we primarily use in O1: views
to mutable domain models.
This subpackage contains the version of View
s 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 View
s in o1.gui.immutable.
Life-quality improvements for working with the Swing GUI library in Scala.
Life-quality improvements for working with the Swing GUI library in Scala.
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
.
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
.
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
.
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
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
.
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
.
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
.
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
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
.