Basic Concepts

When you start Czimps there are two windows, Help which is really a web page with a black background and a series of yellow links, and the Collections Window which is a series of lines of text with a purple background in a green window, with a series of buttons at the top. On a PC you will see both but on a Tablet press the Back button to switch between them.

Each line in the Collections Window heads a Collection of related items. So for example if you load or create an Image it will appear in one of the Image Collections Left Images or Right Images. Notice that one line in the Collections Window has a black background, it is called the Selected Line or Selected Item, the various Command Buttons at the top of the window operate on this line. Each collection can have one Active Item which has a dark background.

Functions Collection
You can perform various operations using the Command Buttons mentioned above, but Czimps can do many things that are too numerous to assign to individual buttons. There are over 900 Functions that can be added to this Collection by clicking on the Menu Command Button. What is more you can group several functions together in a Function List (or Funlist) in this collection. There are also Functions that allow looping over Functions and doing things conditionally that you can add to a Funlist, thus you can program simple or complex procedures. When you have created a Function or Funlist of Functions you can set it in action using the Run Command Button.

Properties Command Button
Most items you load or create, including the Functions mentioned above, have Properties. In the simplist case it might be just a name, which you enter as a single line of text. You will encounter the following on Properties Dialogs. Single Line Text for names and numbers and other short items. Multiline Text for longer text strings. Tick Boxes which have a button which is Green for ticked and Red otherwize. Enumerations Which are lists of items from which you can choose one. Slider Some Single Line Text boxes are used to hold numbers, if there is a Slider on the Dialog and the Cursor is in one of these moving the Slider will enter numbers in the range 0.0 to 1.0. Colours As is well known computers use colours that are usually composed from three components usually Red, Green and Blue. In Czimps these components can take values between 0.0 and 1.0. There is often a Colour Sample to the right of a row of numbers that represent a colour. This sample is devided into 4 parts which can be clicked to adjust the colour. There is usually a fourth number associated with a colour, its Transparancy or Alpha, 0.0=transparent and 1.0 opaque. Once you have set all Propoerty Fields press the Green button to close the Dialog.

Variables Collection
A Variable is a named decimal number, it will always have a value when created but you are at liberty to change this value as and when you need to. Variables are used to hold the results of calculations, and can be used in calculations. Computers can store data of many different types, you probably know that in the end it is all encoded into binary Bits. Eight of these Bits are combined to make one Byte which is the standard measure of how much memory a piece of data occupies. A Variable is a data container that stores a floating point number which consumes 8 Bytes of storage. Variables also have a Name property. Names etc. are stored as strings of text each character of which occupies a single Byte. So the actual memory needed by a variable is more than 8 bytes, there are also other overheads associated with listing and maintaining items.

Strings Collection
A String has a Name and a value. The value is a sequence of characters each occupying one Byte. To access a string in Czimps precede its name with $, if you need to include a $ type $$. A Maths String is indicated by putting % in front of its name. When editing a normal string by pressing the Edit Command Button it is not syntax highlighted but a Maths String is so you can check its syntax before it is processed by Maxima, or used as a Symbolic expression.

Left Images Colledtion
Right Images Collection
Digital Photographs or Images you are working on or have created are listed in these collections. Each has a Name and various other properties the most important of these is its Size which is two numbers, its Width and Height which are measured in Pixels. If you magnify an Image enough you will find it is composed of solid rectangles of colour, each of these is a Pixel. Internally a Pixel is made up of one or more floating point numbers, each of which occupies 4 bytes. Corresponding numbers in each Pixel are collectively known as channels. Each number is called a Component, all Pixels in an Image have the same number of components.

Lists
An Imlist or Image List can be added to an Image Collection in the same way as a Funlist can belong to the Functions Collection. The main difference between the two, apart from their content, is that Funlists can contain child Funlists but Image lists can only contain Images. Czimps also alows you to create lists in other collections there shortform names are Maplists in Maps, Matlists in Matrices and Symlists in Symbolics, None of these can have child Lists. A lists name is shown in the Collections Window with a pale blue background. Some of thgese list types have special properties peculiar to their type but you can use any of them in a CallList function to process each child item in turn. Each collection that can contain lists can have one Active List

Maps Collection
A Map is like an Image with just one Channel, its elements are called Mapcells, each occupies 4 bytes. Maps do not store Maeta Information like images, this Meta Information is things like when a Photograph was taken. A series of Mapcells from a single row is called a Mapvec or Map Vector, their are various functions that use or process Mapvecs. Mapvecs are useful for storing things like Point Coordinates, Colours, Rectangle Corner Coordinates etc. Maps can share their content with some types of Matrices and Tables. You can seperate the Channels of an Image into a set of Maps in a Maplist. You can view/edit the numbers in a Map using the Table Editor.

Matrices Collection
Numeric Matrices are stored in this collection. A Matrix is another data structure which has cells this time known as Matcells, a Matcell can have multiple components, and a matrix can have multiple dimentions. The size of the elements in a Matrix can be one, two, four or eight Bytes, whats more these can represent signed or unsigned integers or floating point numbers. A 2D Matrix with one, three or four channels consisting of unsigned Bytes or four Byte floats is an alternative container for an image. When you create a Matrix it is empty, and while being used the size of a Matrix can be changed.

Image Window
Czimps lets you show an Image, a Map or a Matrix of suitable type in an Image Window by pressing the Open Command Button. In the case of a Map or floating point Matrix only values in the range 0.0 to 1.0 are shown, unsigned Bytes have values of 0 to 255. An Image Window has two panes, one that shows the whole image and the other a magnified view of part of it. You can set the location of a point in the Magnified Pane, and the location which is magnified in the other Pane.

Tables Collection
Tabular data is arranged in Rows and Columns each of which has a Heading. There are various Functions which allow you to use this data and you can also view or edit it by pressing the Edit Command Button which will open the Table Editor.

Symbolics Collection
Using Symbolic Objects or Symbolics you can do arithmatic to any desired number of digits and do simple Algebra. Symbolics are entered as strings but are not stored as such, numeric values are not necessarily stored in the usual way. So numbers and expressions must be converted for use in other parts of the program. Expressions are made up of Symbols, Functions, Operators and Numbers. A Symlist can be used to group expressions, so a list with two expressions can represent an equation with an assumed = sign between them. Symbols are used to represent variables in expressions as well as an internal name they can be given a string which will be Printed, this is how you get symbols like PI to print correctly. Symbols can also have Subscripts.

System Collection
The System collection contains System Variables and Strings the names of these items always begin with _. Some items have a prefix befor their name # denotes a Handle and % a Maths String.

# Handles
Each line in the Collections Window has a number associated with it that can be used to get at the associated data very quickly, this number is called a Handle. If a Variable contains a Handle its name has a # prefix. Each type of Active Item has a Handle Variable in the System collection. If you select a different item these handles will be updated appropriately.