Giter VIP home page Giter VIP logo

rose's Introduction

Rose -- A GUI Library Primarily Targeting Raspberry Pi On Small Displays.

docs available

I have started this project mainly to bring my personal desires to the great features available from HamClock. My advice is that you start there, then check out my design goals to see if this project may provide some benefit to you. I am not here to criticize HamClock, only to bring a slightly different vision to packaging the features. It has taken on a life of its own as I looked into the various small environment GUI systems that are available; I finally decided to write my own.

Why Write a new GUI Library

The short answer is because none of the existing available alternatives met all my needs. The long answer is a bit more complicated. I may get to writing all about that some time, but for now here is part of the story.

I started out porting HamClock to Raspberry Pi C++ using NanoGui. You can read about that experience in my other repository GuiPi. Eventually most of what is there will end up here. Ultimately though I was not satisfied with NanoGui. It is a great piece of work and impressive, but not close enough to what I wanted. So here we are.

Documentation

Basic Doxygen documentation is hosted by codedocs.xyz.

Installing

See Installing documentation.

Building

Rose is primarily aimed at a Raspberry Pi with a small display. My personal target environment is a Pi 3B in a SmartyPi case with the Raspberry Pi 7 inch touchscreen display.

My development environment is Linux (Linux Mint at the moment) using CLion as my IDE. So everything should work on any Linxu distribution, but certainly distributions which are like Debian.

A also have a Pi 4B with 8GB of memory I use to generate packages which I host on GemFury. I may replace my Pi 3B with a Pi 4B 2GB model.

Dependencies

TL;DR

sudo apt install cmake libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libcgicc-dev libsoci-dev libsqlite3-dev libcurl4-openssl-dev libcurlpp-dev

CMake 3

C++17 Compiler moving to C++20 when available on Raspberry Pi OS

SDL2 Using packages available in the respective OS repositories

  • SDL is used as the graphics drawing package.
  • SDL2_IMAGE is required for image manipulation.
  • SDL2TTF is required for font manipulation.
  • The version of SDL2 distributed with Raspberry Pi OS needs to be modified to change the following lines: *
    /* Note: If you modify this list, update SDL_GetPixelFormatName() */
    enum
    
    to:
    /* Note: If you modify this list, update SDL_GetPixelFormatName() */
    typedef enum
    
    • and
            SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
    };
    
    to:
            SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
    } SDL_PixelFormatEnum;
    
  • CURL is used for accessing assets on the WWW.

SOCI with sqlite3 plugin

  • Database access for:
    • Application settings.

Other tidbits

Doxygen with graphvis, if you want to build the Doxygen.

apt install graphviz doxygen

High Readability Font

https://www.brailleinstitute.org/freefont

Doxygen tutorial

https://vicrucann.github.io/tutorials/quick-cmake-doxygen/

Merging RGB and A from two textures

https://forums.libsdl.org/viewtopic.php?p=48648

Discrete Furrier Transform for GPU

https://github.com/jdupuy/dj_fft

Spherical Trigonometry

http://www.movable-type.co.uk/scripts/latlong.html

International Date Line

https://ithoughthecamewithyou.com/post/international-date-line-longitude-latitude-coordinates

Moon Phases

https://metacpan.org/pod/Astro::MoonPhase http://www.ben-daglish.net/moon.shtml https://www.subsystems.us/uploads/9/8/9/4/98948044/moonphase.pdf

rose's People

Contributors

pa28 avatar

Watchers

 avatar  avatar

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.