https://github.com/jrincayc/ucblogo-code
Revision 78349660e71a90ff9b7f01732852fd798961a9fd authored by Dan Malec on 01 February 2022, 13:11:07 UTC, committed by GitHub on 01 February 2022, 13:11:07 UTC
* Refactor code so selection highlighting does not depend on platform supporting inverted blit mode.

Selection highlighting is now handled by checking when drawing characters if they are inside the
currently selected area or not. An appropriate foreground/background color is then selected for
drawing the character.

* Revised wxTerminal::UpdateNormalizedTextSelection comments to more accurately reflect highlighting logic
1 parent a4e502d
Raw File
Tip revision: 78349660e71a90ff9b7f01732852fd798961a9fd authored by Dan Malec on 01 February 2022, 13:11:07 UTC
Refactor code so selection highlighting does not depend on platform supporting inverted blit mode. (#123)
Tip revision: 7834966
makefile.msys
CC	= gcc
CFLAGS	= -g -O -DHAVE_CONFIG_H -DHAVE_WX -DX_DISPLAY_MISSING -O0
CXX     = g++
MINGW_BIN_DIR = /mingw/bin
WX_DIR = $(HOME)/wxWidgets-3.0.5
CXXFLAGS =  -DHAVE_CONFIG_H -DHAVE_WX -I$(WX_DIR)/include -I$(WX_DIR)/lib/gcc_lib/mswu -D__WXDEBUG__ -D__WXMSW__ -mthreads
LDFLAGS	=   -mwindows
WX_LIB_LOC = $(WX_DIR)/lib/gcc_lib/
LIBS  =   -lm  -L/usr/local/lib  -mwindows -mthreads  -mwindows -Wl,--subsystem,windows -mwindows -L$(WX_LIB_LOC)  -lwxmsw30u_richtext -lwxmsw30u_aui -lwxmsw30u_html -lwxmsw30u_adv -lwxmsw30u_core -lwxbase30u_net -lwxbase30u  -lwxregexu -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
prefix = /c/ucblogo
BINDIR        = $(prefix)/bin
LIBLOC        = $(prefix)/lib/logo
LINKER = $(CXX)

# LIBLOC      = `pwd`

OBJS	= coms.o error.o eval.o files.o graphics.o init.o intern.o \
	  libloc.o lists.o logodata.o main.o math.o mem.o paren.o parse.o \
	  print.o wrksp.o nographics.o git.o wxMain.o wxTerminal.o \
	  wxCommandHistory.o wxTurtleGraphics.o TextEditor.o wxterm.o

SRCS	= coms.c error.c eval.c files.c graphics.c init.c intern.c config.h \
	  libloc.c lists.c logodata.c main.c math.c mem.c paren.c parse.c \
	  print.c wrksp.c nographics.c wxMain.cpp wxTerminal.cpp \
	  wxCommandHistory.cpp wxTurtleGraphics.cpp TextEditor.cpp wxterm.c

HDRS	= globals.h logo.h xgraphics.h

all:	logo.exe

mem.o:	mem.c
	$(CC) $(CFLAGS) -O0 -c mem.c

logo.exe:	$(OBJS)
	windres logo_win.rc -O coff -o logo_win.res
	$(LINKER) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) logo_win.res -o logo.exe

git.c:	$(SRCS)
	echo 'char* GIT = "('`git describe||echo NA|tr -d '\r'`')";' > git.c

config.h: config.h.msys
	cp config.h.msys config.h

tags:	$(SRCS)
	ctags --format=1 -N $(SRCS) $(HDRS)
#	ctags -t $(SRCS) $(HDRS)

libloc.c:
	echo 'char *libloc="'$(LIBLOC)'/logolib";' > libloc.c
	echo 'char *helploc="'$(LIBLOC)'/helpfiles";' >> libloc.c
	echo 'char *cslsloc="'$(LIBLOC)'/csls";' >> libloc.c
	echo 'char *temploc="/tmp";' >> libloc.c
	echo 'char *separator="/";' >> libloc.c

helpfiles:
	mkdir helpfiles

helpfiles/HELPCONTENTS:	makehelp usermanual
	./makehelp
	sort helptemp | pr -5 -t -w80 >> helpfiles/HELPCONTENTS
	rm helptemp

makehelp:	makehelp.c
	$(CC) -o makehelp makehelp.c

clean:
	rm -f *.o libloc.c
	rm -Rf UCBLogo/

ship:
	rm -f config.h config.cache config.log config.status
	rm -f makefile makehelp logo *.o libloc.c
	cd docs; $(MAKE) ship

install_win: all
	for d in $(BINDIR) $(LIBLOC) $(LIBLOC)/logolib $(LIBLOC)/helpfiles $(LIBLOC)/csls $(LIBLOC)/source; do [ -d $$d ] || mkdir -p $$d || exit 1; done
	cp logo.exe $(BINDIR)/ucblogo.exe
	cp $(MINGW_BIN_DIR)/libgcc_s_dw2-1.dll $(MINGW_BIN_DIR)/libstdc++-6.dll $(MINGW_BIN_DIR)/libwinpthread-1.dll $(BINDIR)/
	cp -f logolib/* $(LIBLOC)/logolib/.
	cp -f helpfiles/* $(LIBLOC)/helpfiles/.
	cp -f csls/* $(LIBLOC)/csls/.
	cp -f LICENSE $(LIBLOC)/
	cp -f README.md $(LIBLOC)/README.txt
	cp -f *.[ch]* makefile.msys ucblogo.xpm logo_win.rc logologo.ico docs/ucblogo.texi $(LIBLOC)/source/
	cp -f docs/ucblogo.pdf $(LIBLOC)/
	#(cd docs; prefix=$(prefix) LIBLOC=$(LIBLOC) BINDIR=$(BINDIR) $(MAKE) install)
#	prefix=$(prefix); LIBLOC=$(LIBLOC); BINDIR=$(BINDIR); export prefix LIBLOC BINDIR; cd emacs; $(MAKE) install

make-docs:
	(cd docs; prefix=$(prefix) LIBLOC=$(LIBLOC) $(MAKE) all)

ucblogo.zip : logo.exe
	mkdir -p UCBLogo
	cp logo.exe UCBLogo/
	cp -a logolib UCBLogo/
	cp /mingw/bin/libgcc_s_dw2-1.dll /mingw/bin/libstdc++-6.dll UCBLogo/
	zip -r ucblogo.zip UCBLogo
#Note, to figure out which dlls are needed, use:
#  objdump.exe -x logo.exe | grep -i 'DLL Name'

mac: all
	mkdir -p UCBLogo.app
	mkdir -p UCBLogo.app/Contents
	cp Info.plist UCBLogo.app/Contents/
	cp PkgInfo UCBLogo.app/Contents/
	cp pbdevelopment.plist UCBLogo.app/Contents/
	mkdir -p UCBLogo.app/Contents/Resources
	cp -r csls UCBLogo.app/Contents/Resources/
	cp -r helpfiles UCBLogo.app/Contents/Resources/
	cp -r logolib UCBLogo.app/Contents/Resources/
	mkdir -p UCBLogo.app/Contents/MacOS/
	cp logo UCBLogo.app/Contents/MacOS/UCBLogo
back to top