Skip to content

Latest commit

 

History

History
22 lines (21 loc) · 2.4 KB

REQUIREMENTS.md

File metadata and controls

22 lines (21 loc) · 2.4 KB

Requirements (WIP)

  • Create command line arguments for the resolution and the amount of iterations
  • Create a PixelBuffer struct. This struct should contain its associated PixelPlane struct, and should store the color of each pixel in 8 bits per color, so 8 bits for red, green and blue. This is also called true color (24-bit). The PixelBuffer should be the input for rendering functions.
  • Create a TrueColor struct, containing a 24-bit true color, with 8-bits for the R, G and B channels. The struct should contain methods for conversion to HSV and from HSV. The TrueColor struct should be constructable from a u32 representing a true color.
  • Create a PixelPlane struct. This struct should contain a width and height in pixels, and an aspect ratio.
  • Create a MandelbrotSet struct. This struct should contain max_iterations, orbit radius, and an iterate function.
  • Create a logging function, with log levels DEBUG, INFO, ERROR, and a commandline argument specifying the level, default should be INFO
  • Create a struct to combine KEY, description, action, to make it easy to display what keys are doing in the future, self-documenting
  • Save the current Mandelbrot view with the 'S' key to a .png file, the view is stored in the metadata of the image
  • Allow the user to swap R, G and B colors in an image by adding a keybinding to ask the user for a "RGB" string
  • Make supersampling_amount commandline argument nr. 4
  • Add a keybinding to allow the user to change the image parameters, width, height, SSAA, max_iterations
  • Add a keybinding to allow the user to swap with each other color channels, RGB -> RGB, GRB, RBB, etc.
  • Add a keybinding to change coloring algorithm
  • Add a function to allow users to pick from a number of options, that returns the picked option, for example coloring algorithms, saved views, etc.
  • Add a keybinding to allow users to save the current view to a config file
  • Add a keybinding to allow users to load a view from a config file
  • Add a keybinding to allow users to manually input a Mandelbrot set view into the terminal
  • Add a commandline argument to fractionally scale the resolution, so for example a 1920x1080 at 0.5 scale view could be viewed in 960x540
  • Add an object that stores Mandelbrot set iterations in a buffer, associated with a view and a pixelplane and a mandelbrot set
  • Add ColorChannelMapping value to metadata