Skip to content
Tristan Grimmer edited this page Feb 18, 2023 · 45 revisions

Welcome to the Tacent View wiki.

Roadmap

  • Copy/paste images from clipboard. DONE
  • Command-line operations for image processing so TacentView can be integrated into build pipelines.
  • Compression of BC and ASTC formats so ktx, ktx2, astc, and dds files can be written, not just read.
  • Extract single or all frames from any multi-frame image.

Packaging zip for windows

  • Open in vscode. Configure for Release. Build the Install target.
  • Command line

Packaging deb file for Ubuntu/Debian etc

  • mkdir builddeb
  • cd builddeb
  • cmake .. -GNinja -DPACKAGE_DEB=True
  • ninja install

Creating a snap and uploading to store

  • cd Linux/snapcraft

  • snapcraft clean tacentview // without tacentview an entire VM image is DLed.

  • snapcraft

  • sudo snap install --dangerous tacentview.snap // To Test.

  • sudo snap remove tacentview // To remove above.

  • snapcraft export-login snapcraftcreds

  • export SNAPCRAFT_STORE_CREDENTIALS=$(cat snapcraftcreds)

  • snapcraft login

  • snapscraft upload --release=edge tacentview_1.0.29_amd64.snap

Then manage it from the snap store.

Setting Up Ubuntu

  • sudo apt-get update
  • sudo snap install snapcraft --classic
  • sudo snap install multipass
  • sudo apt-get install gdebi # OPTIONAL Installs this gdebi thing that adds support for installing deb files.
  • sudo apt-get install git
  • sudo gdebi Downloads/smartgit-19_1_7.deb # Installs smartgit, my favourite git frontend at the moment.
  • sudo apt-get install llvm # The compiler.
  • sudo apt-get install clang # The compiler.
  • sudo apt-get install lldb # The debugger.
  • sudo update-alternatives --config cc # Choose gcc or clang as default C compiler.
  • sudo update-alternatives --config c++ # Choose gnu or clang as default C++ compiler.

The Software and Updates app allows you to manage (and disable) repositories.

  • sudo add-apt-repository ppa:eugenesan/ppa # Adds a repo
  • sudo add-apt-repository --remove ppa:eugenesan/ppa # Removes a repo

To use WSL and allow it to create a deb file:

  • sudo update-alternatives --set fakeroot /usr/bin/fakeroot-tcp

Design Notes on Commandline Options

At the time of writing, nothing below is implemented. These are just thoughts on what could be implemented over time to make Tacent View usable in build pipelines or for patch processing of large numbers of files.

First, there will be no interactivity when executing these options so calls can be made in pipelines without needing further input. Operations will either succeed or not. When batch processing many files, there will be options allow checking if the operation needs to be recalculated or if the current output files already represents the completed operation. This is optional and when enabled accomplished by saving a sidecar file along with the processed image. This sidecar file includes the information specifying what the current output file represents (what operations were performed, when, and what the input file and modification date were). With this information the tool can decide whether it needs to redo the operation or not.

There will be an arbitrary number of input files, a set of operations that get applied to the inputs (in a particular order), followed by saving the output files(s).

There is not necessarily a one-to-one mapping between input files and output files. For example, generating a contact-sheet would have many inputs, but only one output. Conversely, extracting frames from an image would have one input file, and many outputs. The input files are specified explicitly, the output files are implicit with options to control the naming and format.

Here's an example of specifying input files. The order may or may not be important. For example, when generating a contact sheet order is important.

viewer.exe @filelist.txt landscape.jpg building.png

Operations are specified using the operation option: --op (-o) followed by one of the following operations:

  • quantize
  • resizeimage
  • resizecanvas
  • extract (extract one or more frames from an animated image).
  • flipbook (create a single flipbook image from a collection of individual frame images).
  • combine (create an animated image from a collection of individual frame images).
  • levels
  • contrast
  • brightness
  • crop
  • flip
  • rotate
  • multalpha

These options get specified after --op. One per --op. Order is important. Here's an example of specifying a colour quantize followed by a rotation.

viewer.exe landscape.jpg --op quantize --op rotate

For specifying different operation parameters you may include them as a comma-delimited list inside brackets. For example, when adjusting brightness, you get to specify the brigtness delta/percent.

viewer.exe landscape.jpg -op brightness(+12%) -op rotate(fill,8.2) --filetype tga

Output files generally keep the same basename of the corresponding input file. You can either specify the type of all output files or keep the same type/extension as the input files. If keeping, you may either have it overwrite existing files with the same name silently, or generate new filenames until one is available to be saved. The following options are available. The ones that take no arguments are just boolean flags.

  • --keeptype
  • --overwrite
  • --filetype type
  • --autorename (overwrite not needed if this specified)
  • --outfile filename (only for situations where a single output file is generated. eg. Extracting a single image from an animation, only processing a single input file, generating a contact-sheet/flipbook image.)
  • --dependencies mode (mode is sidecar, modonly, none)

By default, if there is no output specified (no keeptype, no filetype, and no outfile), the viewer opens the first file/directory in the GUI.

Finally, the majority of options are for controlling the parameters for how to generate the various output files. For example, if --filetype gif was specified, there are numerous ways to generate a gif including quantization method, palette size, whether to encode transparency etc. Most of the filetypes have at least some parameters that may be controlled to genereate output.

Clone this wiki locally