Here are some indications to contribute to PINT.
build
: project build outputcoverage
: test coverage reportssrc
: source codetest
: test code
Here is the interesting part.
assets
: Graphical elements that might be displayedcss
: Style sheetsts
: Typescript code (see Code architecture)
There is only Javascript and Typescript code in this directory. It may use code from the client directory as both are built jointly.
Modularity and abstraction is the key and the goal of this project.
A Project
represents an open document, with its settings and layers.
Its main way of communication is through ActionInterface
that encode every alteration of the document.
A the Tool
abstract class generalizes the features of a tool and is the only way to interact with both the project
and user interface. It can request settings from the user interface through SettingsRequester
and generate actions
through ActionInterface
.
Selection is considered as a Special setting and can be requested and altered like other parameters.
NetworkLink
is the client side of the socket, that encapsulates socket data with ActionInterface
to create
an ActionNetworkPacket
. Therefore ActionInterface
must contain serializable data that can be passed through
the network.
The server has a local copy of every shared project, and performs every action like the clients. Moreover it handles the
PintHistory
class whose name is pretty straightforward.
Please don't make a mess.