GithubHelp home page GithubHelp logo

cartalib's Introduction

Carta™ GUI Library

Created by Alexander Nicholi
Copyright © 2020 ARQADIUM LLC.
All rights reserved.

See COMPILING for build instructions. See COPYING for licencing. The src/
subdirectory contains all of the engine source code. The doc/ subdirectory
contains all of the engine documentation. In-tree third-party libraries are
contained in the 3rdparty/ subdirectory, with their own subdirectories for
source code and documentation.

cartalib's People

Contributors

nicholatian avatar

Watchers

James Cloos avatar  avatar

cartalib's Issues

Project Roadmap

Using our revolutionary new talk issue label as a sentinel for discussion threads, this one will serve as a rendezvous for all of the high-level planning for Carta.

To my knowledge, no other GUI toolkit in the wild is data-oriented; object-oriented APIs predominate heavily. This break in trend is in the interest of user empowerment and the core mission of Carta: Provide a user interface tool kit driven by productivity.

So far, we have found four tenets of the project’s nature in development:

  1. code is totally ANSI C†
  2. graphics are constructed with scalable vectors
  3. the API is data-oriented
  4. software rendering should be feasible, at minimum as a fallback

Moving on into the meat of Carta, we have, as an alternative conceptual base to Object, the ‘item’, which is simply any given thing that appears on the screen. Carta provides five fundamental items with which a powerful GUI can be created:

  1. Text – An abstract term for high-density information intended for humans. Usually is composed of literal text, but it is not limited to that
  2. Plaster – The unit of visual foundation applied onto an interface. Comprised of colour, gradients, and simple patterns constructable with math
  3. Overlay – Modifies the view with the purpose of controlling focus. Like Plaster, but with filters and adjustments instead of colours and gradients
  4. Picture – A canvas of pixels providing the finest granularity of image control. Useful for the centrepieces of many applications, including image editors, code editors, and so on
  5. Reflection – Takes an input from a source (such as a screen partition or external video source) and displays it. A good visual example is a video editing software showing a miniature of the camera view

There is a sixth kind of construct in Carta, but I have separated it from the list as it is more meta than literal. It is the Partition, and it provides the delineation left by our departure from object oriented programming and its easy provisioning of boundaries with its veneer of class hierarchies. Partitions demarcate a portion of the viewport, in units of the nominal resolution, and this demarcation can be referenced when compiling the state of the UI for rendering.

These systems are designed to be fundamentally excellent for UIs of power, and this is proven with Carta’s signature functionality: zooming. The power of Carta in space is detailed above, and zooming is its power in time. An intelligent zoom in a program is nothing more than an increase in the amount of information to view. This maintains the amount of information on the screen at any given time to be relatively constant, while allowing potentially infinite amounts of information to be processed easily by human beings. What you see is what you get, brought up to speed for the information age.


† “ANSI C” colloquially refers to the 1989 standardisation of the C programming language by the ANSI committee X3J11.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.