QLogo is a rewrite of the UCBLogo language and user interface with UCB compatibility. It is cross-platform and uses hardware-accelerated graphics.
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
.gitignore Transitioning to single message pathway between controller and kernel… Jun 11, 2018
Doxyfile Added doxygen configuration. Nov 30, 2017
Icon.icns Initial public commit. Nov 26, 2017
LICENSE Initial commit Nov 26, 2017
QLogo.pro Transitioning to single message pathway between controller and kernel… Jun 11, 2018
README Added 'code is broken' message to README. Jun 20, 2018
TestQLogo.pro Separated Datum sublasses into their own implementation files. Apr 14, 2018
_config.yml Set theme jekyll-theme-tactile Nov 27, 2017
canvas.cpp Minor code changes. Added Doxygen comments to Datum.h. Apr 23, 2018
canvas.h Updated version number to 0.92. Jan 22, 2018
console.cpp Transitioning to single message pathway between controller and kernel… Jun 14, 2018
console.h Transitioning to single message pathway between controller and kernel… Jun 14, 2018
datum.cpp Minor code changes. Added Doxygen comments to Datum.h. Apr 23, 2018
datum.h Minor code changes. Added Doxygen comments to Datum.h. Apr 23, 2018
datum_array.cpp Separated Datum sublasses into their own implementation files. Apr 14, 2018
datum_astnode.cpp Separated Datum sublasses into their own implementation files. Apr 14, 2018
datum_datump.cpp Separated Datum sublasses into their own implementation files. Apr 14, 2018
datum_iterator.cpp Separated Datum sublasses into their own implementation files. Apr 14, 2018
datum_list.cpp Minor code changes. Added Doxygen comments to Datum.h. Apr 23, 2018
datum_word.cpp Separated Datum sublasses into their own implementation files. Apr 14, 2018
editorwindow.cpp 'Cancel' key sequence not available in Qt 5.5 Dec 15, 2017
editorwindow.h Formatting changes. Nov 26, 2017
editorwindow.ui 'Revert Changes' key is now Cancel (ESCAPE). Dec 15, 2017
error.cpp Ensure procedure parameters that execute a list return a valid datum. Apr 28, 2018
error.h Ensure procedure parameters that execute a list return a valid datum. Apr 28, 2018
help.cpp Initial public commit. Nov 26, 2017
help.h Initial public commit. Nov 26, 2017
icon.ico Initial public commit. Nov 26, 2017
kernel.cpp Error events clear event queue. Apr 28, 2018
kernel.h Fixed Tail recursion optomization. Apr 26, 2018
kernel_arithmetic.cpp List modification signals reparsing when executing. Dec 17, 2017
kernel_communication.cpp Transitioning to single message pathway between controller and kernel… Jun 12, 2018
kernel_controlstructures.cpp Ensure procedure parameters that execute a list return a valid datum. Apr 28, 2018
kernel_datastructureprimitives.cpp Updated README. Apr 26, 2018
kernel_graphics.cpp Initial public commit. Nov 26, 2017
kernel_workspacemanagement.cpp PRINTOUT now more accurrate Mar 16, 2018
library.cpp CASEIGNOREDP is buried Nov 27, 2017
library.h Formatting changes. Nov 26, 2017
mainwindow.cpp Transitioning to single message pathway between controller and kernel… Jun 14, 2018
mainwindow.h Transitioning to single message pathway between controller and kernel… Jun 11, 2018
mainwindow.ui Renamed Canvas elements with 'Event' in their names because they're n… Jan 20, 2018
message.cpp Transitioning to single message pathway between controller and kernel… Jun 14, 2018
message.h Transitioning to single message pathway between controller and kernel… Jun 14, 2018
parser.cpp PRINTOUT now more accurrate Mar 16, 2018
parser.h Minor code changes. Added Doxygen comments to Datum.h. Apr 23, 2018
procedurehelper.cpp Ensure procedure parameters that execute a list return a valid datum. Apr 28, 2018
procedurehelper.h Made Controller the application parent class instead of MainWindow. Feb 5, 2018
propertylists.cpp Formatting. Nov 27, 2017
propertylists.h Formatting changes. Nov 26, 2017
qlogo_controller.cpp Transitioning to single message pathway between controller and kernel… Jun 14, 2018
qlogo_controller.h Transitioning to single message pathway between controller and kernel… Jun 14, 2018
qlogo_main.cpp Made Controller the application parent class instead of MainWindow. Feb 5, 2018
test_controller.cpp Formatting. Nov 27, 2017
test_controller.h Error events clear event queue. Apr 28, 2018
testqlogo.cpp Ensure procedure parameters that execute a list return a valid datum. Apr 28, 2018
turtle.cpp Updated version number to 0.92. Jan 22, 2018
turtle.h Formatting changes. Nov 26, 2017
vars.cpp Initial public commit. Nov 26, 2017
vars.h Formatting changes. Nov 26, 2017
workspace.cpp Formatting changes. Nov 26, 2017
workspace.h Formatting changes. Nov 26, 2017

README

This is README for candidate 0.93 of QLogo

IMPORTANT!!!

QLogo is in a state of transition. The latest source has parts that are broken
and will be repaired later.

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

$ git checkout v0.92

You can also 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. Specifically, it mimics (as reasonably as possible)
the UCBLogo interpreter developed at U.C. Berkeley. In fact, the
UCBLogo manual describes about 99.9% of the functionality. You can
find the UCBLogo Manual here:

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


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


Compiling

QLogo is being developed and tested to work with C++11 and Qt 5.6.3. Qt 5.6 is
the last version to support Windows XP. However, QLogo is also being developed
and tested against the newest version of Qt (5.10) so it can be assumed that
any version in between should work just fine.


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

* Windows 10 using Visual Studio 2017 and MinGW GCC 6.3.0.
* Ubuntu 18.04 LTS using GCC 7.3.0
* Mac OS X 10.13 using Clang/LLVM
* Raspberry PI 3 using Raspbian


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


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.
  


* 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
                   widnow resizing. Use FILLED instead.

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

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

CSLSLOAD: ........ No plans at the current time. 

SETCSLSLOC: ...... No plans at the moment.

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.