All Projects → jasonsikes → Qlogo

jasonsikes / Qlogo

Licence: gpl-2.0
QLogo is a rewrite of the UCBLogo language and user interface with UCB compatibility. It is cross-platform and uses hardware-accelerated graphics.

Programming Languages

cpp
1120 projects
language
365 projects

Projects that are alternatives of or similar to Qlogo

Mapbox Gl Native
Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL
Stars: ✭ 4,091 (+10389.74%)
Mutual labels:  opengl, opengl-es, qt
Zoomlayout
2D zoom and pan behavior for View hierarchies, images, video streams, and much more, written in Kotlin for Android.
Stars: ✭ 688 (+1664.1%)
Mutual labels:  opengl, opengl-es
Ashengine
A cross-platform 3D engine based on Qt 5.9.7, OpenGL 3.3 and Assimp 4.1.
Stars: ✭ 35 (-10.26%)
Mutual labels:  opengl, qt
Aspia
Remote desktop and file transfer tool.
Stars: ✭ 784 (+1910.26%)
Mutual labels:  qt, qt5
Notes
Note-taking application, write down your thoughts.
Stars: ✭ 612 (+1469.23%)
Mutual labels:  qt, qt5
Qt Frameless Window Darkstyle
simple MainWindow class implementation with frameless window and custom dark style. It adds also support for titlebar and buttons (minimize, maximize, close)
Stars: ✭ 628 (+1510.26%)
Mutual labels:  qt, qt5
Celestia
Real-time 3D visualization of space.
Stars: ✭ 785 (+1912.82%)
Mutual labels:  opengl, opengl-es
Qt.go
Qt binding for Go (Golang) aims get Go's compile speed again.
Stars: ✭ 487 (+1148.72%)
Mutual labels:  qt, qt5
Kepler3d
OpenGL and C++14 game engine that loads glTF 2.0
Stars: ✭ 9 (-76.92%)
Mutual labels:  opengl, opengl-es
Workspace
🚀 Base applications and settings for Liri OS
Stars: ✭ 9 (-76.92%)
Mutual labels:  qt, qt5
Q3dobserver
Multi-platform C++11 library based on Qt for creating 3D viewer widgets
Stars: ✭ 13 (-66.67%)
Mutual labels:  opengl, qt5
Screencloud
Screenshot sharing application for Windows, Mac and Linux.
Stars: ✭ 537 (+1276.92%)
Mutual labels:  qt, qt5
Olive
Free open-source non-linear video editor
Stars: ✭ 5,682 (+14469.23%)
Mutual labels:  opengl, qt
Scihubeva
A Cross Platform Sci-Hub GUI Application
Stars: ✭ 683 (+1651.28%)
Mutual labels:  qt, qt5
Hidviz
A tool for in-depth analysis of USB HID devices communication
Stars: ✭ 505 (+1194.87%)
Mutual labels:  qt, qt5
Slate
Pixel Art Editor
Stars: ✭ 723 (+1753.85%)
Mutual labels:  qt, qt5
Lqt
Lua Binding for Qt5
Stars: ✭ 30 (-23.08%)
Mutual labels:  qt, qt5
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (+1125.64%)
Mutual labels:  opengl, opengl-es
Taoquick
a cool QtQuick/qml component library and demo(一套酷炫的QtQuick/Qml基础库和示例)
Stars: ✭ 481 (+1133.33%)
Mutual labels:  qt, qt5
Mlt
MLT Multimedia Framework
Stars: ✭ 836 (+2043.59%)
Mutual labels:  opengl, qt

This is README for QLogo.

IMPORTANT!!!

QLogo is in a state of transition. This version barely works!

If you want a fully working version of QLogo source you need to checkout Version 0.92! You can get this either by issuing the following command in your local QLogo repository:

$ git checkout v0.92

OR, you can download QLogo Version 0.92 source on QLogo's download page:

https://www.qlogo.org/download/

==============================================================

QLogo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

QLogo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with QLogo. If not, see http://www.gnu.org/licenses/.

==============================================================

QLogo is an interpreter for the Logo language written in C++ using Qt and OpenGL. It mimics (as much as I find reasonable) the UCBLogo interpreter developed by Brian Harvey at U.C. Berkeley.

You can find the UCBLogo Manual here:

http://people.eecs.berkeley.edu/~bh/usermanual

The differences between QLogo and UCBLogo are described in the "nuances" section below.

==============================================================

Compiling

QLogo is being developed and tested to work with C++11 and Qt 5.9 and 5.15 so it can be assumed that any version in between should work just fine. It is my hope to get this compiled and working on Windows XP which means Qt 5.6.

QLogo is currently being developed and tested on the following platforms:

  • Windows 10 using gcc 8.1.0
  • OpenSUSE LEAP 15.2 using gcc 7.5.0
  • Mac OS X 11.1 using Clang 12.0.0

To build:

$ cmake CMakeLists.txt

$ make

This will give you two executables:

  1. "logo": this is the Logo interpreter that can be run from the command line.

  2. "QLogo": this is the graphical user interface that runs logo and gives you the turtle. (The turtle is one of the many things that's broken right now, but when it works again this is where you'll find it.)

There is no "make install" step yet.

===============================================================

There are a few nuances:

  • Colors can be specified in one of three ways:
  1. as a palette index (0 to 100)

  2. as a list of 3 percentages, one for each of red, green, blue [0 0 0] is black, [100 100 100] is white

  3. as a named color from the X Color Database, e.g. "white" or "lemonchiffon". The X Color database can be found here: https://en.wikipedia.org/wiki/X11_color_names

  • Changes in font properties (size, color, family) do not affect characters already printed. This enables multiple colors and fonts on the same console, but it disables any flash or strobe effect.

  • The entire Logo standard library is loaded internally and buried. There is no library directory at this time.

  • QLogo does not look for nor automatically load STARTUP.LG.

  • If ERRACT is set and its size is greater than zero, then any errors execute PAUSE. This was necessary because I couldn't find a reliable way to prevent infinite loops during error handling.

  • Garbage collection is on-the-fly, meaning that memory is freed the moment a word/list/array is no longer needed. GC and .SETSEGMENTSIZE are no-ops.

  • SAVEPICT saves a copy of the canvas in the format given by the filename's extension. For example: SAVEPICT "MY_PICTURE.PNG will save in PNG format. QLogo can save an image in the following formats: BMP, JPG/JPEG, PNG, PPM, XBM, and XPM

  • HELP is functional, but the text is a copy of the UCBLogo help text. As such, it should be 99.9% correct. This will be fixed.

  • There is no facility yet for translation/internationalization. Yet.

  • The following commands are not implemented:

SETMARGINS: ...... The original purpose of the command was to enable text to be visible on projectors which cut off outer boundaries of a computer screen. Projectors and monitors produced in the last few years show all of the computer screen. On top of that QLogo is a windowed application so an instructor or presentor can move the window to a different position.

FILL: ............ Two reasons: One of the user interface principles was that the canvas should be device resolution-independent. That means when the QLogo window is resized or the separator between the text and the graphics is moved the graphics will remain consistent. The Flood Fill algorithm depends on specific pixels which means that the display can change dramatically depending on the size of the canvas. The other reason is that the Flood Fill algorithm can slow down window resizing. Use FILLED instead.

LOADPICT: ........ This will be implemented soon.

EPSPICT: ......... This will be replaced by SVGPICT.

CSLSLOAD: ........ Not implemented yet.

SETCSLSLOC: ...... Not implemented yet.

SETEDITOR: ....... QLogo uses a built-in editor.

SETLIBLOC: ....... The QLogo library is stored internally.

SETHELPLOC: ...... The help text is stored internally by the application. There is no external file.

SETTEMPLOC: ...... QLogo doesn't create temporary files at this time.

  • The following variables have no special meaning:

COMMANDLINE: ..... QLogo is a GUI application at the moment, although a significant amount of thought is being given to make this also a command-line program.

REDEFP: .......... Qt has strong support for internationalization, but QLogo is not designed at this time to take advantage of that. Internationalization will be supported soon.

USEALTERNATENAMES: Ditto.

  • The following commands are NEW:

ALLFONTS: ...... Returns a list of all the fonts available on your system.

CURSORINSERT: .. Sets cursor to insert mode, this is the default.

CURSOROVERWRITE: Sets cursor to overwrite mode.

CURSORMODE: .... Outputs either INSERT or OVERWRITE

BOUNDS: ........ Outputs a list of two numbers giving the maximum bounds (x,y) of the canvas. e.g. bounds of [350 150] means that the turtle is visible if its X-coordinate is between -350 and 350 and its Y-coordinate is between -150 and 150. The coordinate [0, 0] is always in the center.

SETBOUNDS: ..... Takes two integers and sets outer bounds of the canvas.

MATRIX: ........ This exists for debugging and may be removed. Outputs a list of four lists, each sublist contains four numbers. This is the matrix that represents the current turtle state. In row-major order.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].