NAME
    App::GUI::Juliagraph - drawing Mandelbrot and Julia fractals with
    complex equations

SYNOPSIS
    1.  read this POD

    2.  start the program ins shell: > "juliagraph"

    3.  move knobs and observe how preview sketch reacts til you got an
        interesting image

    4.  push "Draw" (below drawing board) or Ctrl+D or *Draw* in *Image*
        menu, or middle click of the drawing board, to produce full
        resolution image

    5.  choose "Save" in Image menu (or Ctrl+S) to store image in a PNG /
        JPEG / SVG file

    6.  choose "Write" in settings menu (Ctrl+W) to save settings into an
        INI file for tweaking them later

    After first use of the program, a config file *~/.config/juliagraph*
    will be created in you home directory. It contains mainly stored colors,
    color sets and dirs where to load and store setting files. You may also
    change it by editor or delet it to reset configs to default.

DESCRIPTION
    Mandelbrot (first two pictures) and Julia fractals (four after that) are
    just mathematical diagrams, showing you how iterating the equation
    "z_n+1 = z_n ** 2 + C" behaves on the complex plane. Our running
    variable gets an initial value and gets squared each time, plus an
    constant is added, also each time. Mandelbrot mean this constant are the
    pixel coordinates, Julia means the coordinates are the starting value.
    And the pixel color just contains the information how many iterations
    (times) it took until z got greater than our bailout value.

    This program has additional capabilities/options:

    *   iteration formula with up to four monomials

    *   choosable exponent and factor for each of them

    *   choosable stop value and stop metric

    *   free selection of colors

    *   many option to map th colors onto iteration result values

GUI
    The general layout is very simple: the settings (which define the
    fractal) are on the right and the drawing board is left. The settings
    are devided into several thematic tabs. Every change of the settings
    triggers a redraw of the fractal, but only in a blurry preview mode, so
    it can be fast enough. To get a high resolution rendering, press
    "Ctrl"+"D" or push the draw button down left center or click at the
    drawing board with a middle mouse click. (The image menu has also a draw
    item.) With a full rendering the progress bar beside the draw button
    becomes colorful. It is white in preview mode.

    Please mind the tool tips - short help texts which appear if the mouse
    stands still over a button. Also helpful are messages in the status bar
    at the bottom that appear while browsing the menu. Please take also
    special note at the *mouse* section since you can browse the fractals by
    mouse.

  Constraints
    The controls on the first tab panel are the settings that define most of
    the rules by which the equation is computed. The page is divided from
    top to bottom into 5 sections that will be discussed in that order.

    The first section allows you to set the fractal type: *Mandelbrot*,
    *Julia*, of something in between (option *Any*). If you choose
    *Mandelbrot*, the sections 3 and 4 get blurred and set to zero, since
    the play no role in computing this type of fractal. If chosen *Julia*
    only section 4 is blurred and reset. On the right side of this sections
    you can observe, how the checkboxes dance, when switching the fractal
    type. There you can see that Mandelbrot means the pixel coordinates are
    the constant added at each iteration. And *Julia* means that coordinates
    turn to starting values, but you can choose the constant to get
    different shapes. But these checkboxes can only reached, when type *Any*
    is chosen. Only then you can select or deselect both options or even
    choose a third one, that pixel coordinates can become a monomial factor.

    The second section contains the information that select the visible part
    the image. These are zoom factor (its higher when you zoom in) and the
    coordinates that are at the center of the visible section. Chenge them
    to scroll left, right, up or down. Each of these values are controlled
    by a slider step widget. It allows you to change the value in two
    different ways. Either you type in the numbers directly (click first at
    the widget). Or you change the value by clicking the plus and minus
    buttons. The slider beside them determines the size of the value change,
    done by the buttons. The buttons on the most right just reset the values
    in case you got lost.

    The third section is about the mentioned constant number, added to "z"
    at each iteration. A is the real part corresponding to the X-axis and B
    the imaginary part corresponding to Y. In same manner, section four is
    holding the starting value. To both of these values the coordinates can
    be added. Just click the checkbox in the upper right corner. If chosen
    the constant or starting value is then the sum of pixel coordinates with
    the displayed value.

    The fifth section holds all values that determine the end of the
    computation on one spot. There are two conditions that can trigger that.
    Either you run out of iterations (exceeded the maximal interation
    *count*). Please note, that the actual number is the displayed number
    squared. This gives you a wider range eof options and a little more
    comfort while changing the value. When the computation runs out of
    iterations, the current pixel will get the background color. The second
    stop criterion is fulfilled when the value exceeds the bailout limit
    (*Value*), which is also the displayed number squared. In the right
    corner you got ten different ways how to compute the amount of z.
    Mathematicians call them merics. They mostly influence the shape around
    the main shape (the crwon - corona).

  Monomials
    The second tab contains 4 identical sections which also work the same
    way. Each of them stand in for a monomial of the iteration equation, but
    only if the checkbox *On* is marked. A second checkbox decides if this
    monomial gets added or subtracted. The third allows you discard the
    complex factor below the checkboxes. The fourth checkbox allows you to
    use the current pixel coordinates as second factor in the monomial.
    Please be aware this option can only be chosen if fractal type "Any" is
    active and the *Monomial* checkbox in the upper right corner is on. Both
    of these settings are on the previous "Constrains" page. This might seem
    cumbersome, but I wanted to make it very clear that this is no longer a
    "Julia" fractal as most people would understand it. The last and fifth
    checkbox lets you calculate a complex logarithm of the power term z^n.
    This is useful when combined with a very larg factor or another
    monomial. This just mentioned power "n" ca be chosen right beside the
    checkboxes. The higher this power is, the longer it takes to calculate
    the picture, but it adds also a nice rotational symmetry. "Mandelbrot"
    has a (n-1)-times rot symmetry and "Julia" a n-times rotational
    symmetry.

  Color Mapping
    This page is about mapping the iteration number at bailout to a color.
    To be able to do that better you can preview here the color rainbow
    between the first and second section. Below the color rainbow is another
    this monochrome strip. It displayes the currently active background
    color. The rainbow is from left (low iteration number) to right (high).

    The first section starts with a checkbox. When deselected, the fractal
    gets a gray scale. When selected all color choices are in effect. The
    rainbow goes from begin color number to end color number over every
    color in between. So if you for instance selected 2 and 4, the rainbow
    has a gradient from color 2 to color 3 and a second from 3 to 4. The
    exact colors will be changes on the next page. The gradients might vary
    dependant on chosen "dynamic" and color "space" in which they are
    computed.

    The second section is for people who want only a few color regions. Just
    activate the custom checkbox and select the "Steps" count. If they are
    at 20 only 20 differently colored reagions are drawn. The readonly
    textbox below with the current iteration max is only for better
    orientation. When it is at lets say 60 you know: this scale of one to 60
    possible iteratons will be divided into 20 parts. If the distribution is
    *linear* they all have the size of three. But you might want to skew the
    color distribution. The mapping types are sorted by their skewness.

    If the second section is deactivated you are able to activate the third.
    It is for folks that think that the color gradient is not dense enough.
    That might makes sense if the iteration already stops at maximum of 5
    but you want to get a long smooth gradient. Then you want to *Activate*
    subgradients, based on the Value at iteration stop. The greater that is
    the further on the subgradient the resulting color will be. The five
    options here parallel what we already described. Subgradients will have
    the amount of steps as dialed in under "Steps". The gradient will be
    computed from 1 (above bailout value) up to the "Size" value. Everything
    above just lands in the last bucket. The subgradient can again be skewed
    by a "Distribution" and "Dynamic" value (as described above). Also the
    resulting color change dependant in which color "Space" it is computed
    in. *RBG* gives usually more smooth results and *HSL* more contrast.

  Colors
    This page helps you to select the color that will be used to paint the
    fractal. You can see them in the middle row. The background color is
    often the one at the most left. That is why it is marked by a vertical
    bar. The colors are numbered from left to right with 1 to 11.

    The first section on the pages is for loading and saving custom sets of
    colors. Please use the delete button carefully. "New" saves the current
    colors under a new name, "Save" under the current name. There are no
    undo buttons yet.

    The section below helps you to compute related colors beweet the second
    and the currently selected. This can be either a gradient (with
    "Gradient" button). Right beside is a text box to skew the gradient in
    one or anotehr direction. To get complementary colors push the
    "Complement" button. This also can be skewed on the saturation and
    lightness axis (text boxes beside). The arrow butons there help oýou to
    move colors to another position.

    To change a color you have to fist select it by clicking on it or the
    marker below. After that the marker turns into an arrow pointing down.
    Because below are the 6 slider to change the either RGB or HSL values of
    the color. Each slider has a randomize button with a quastion mark.

    The second method to change the selected color is to load one from the
    store (last section below). Just select the color by drop down menu or
    arrows. If you like the seen color push "Load". This single color store
    has also Buttons to store your own favorite colors or delete the ones
    you dont like. The only way to bring back deleted default colors is to
    delete the config file: ~/.config/juliagraph.

  Mouse
    The drawing board responds to three types of clicks. A left click moves
    the visible section. Double click means zoom in and right click is zoom
    out.

  Menu
    The upmost menu bar has only three very simple menus. Please not that
    each menu shows which key combination triggers the same command and
    while hovering over an menu item you see a short help text the left
    status bar field.

    The first menu is for loading and storing setting files with arbitrary
    names. Also a sub menu allows a quick load of the recently used files.
    The first entry lets you reset the whole program to the starting state
    and the last is just to exit (safely with saving the configs).

    The second menu has only two commands for drawing an complete image and
    saving it in an arbitrary named PNG, JPG or SVG file (the file ending
    decides). The submenu above onle set the preferred format, which is the
    format of serial images and the first wild card in dialog. Above that is
    another submenu for setting the image size.

    The third menu has only a dialog with some additional information of
    version numbers and our homepage.

SEE ALSO
    App::GUI::Cellgraph

    App::GUI::Harmonograph

    App::GUI::Sierpingraph

    App::GUI::Spirograph

AUTHOR
    Herbert Breunung (lichtkind@cpan.org)

COPYRIGHT
    Copyright(c) 2023-25 by Herbert Breunung

    All rights reserved. This program is free software and can be used and
    distributed under the GPL 3 licence.

POD ERRORS
    Hey! The above document had some coding errors, which are explained
    below:

    Around line 289:
        Non-ASCII character seen before =encoding in 'oýou'. Assuming CP1252

