shithub: alienpatch

ref: b947939ff7c76fc5096defd5675c43668e5e5fe4
dir: alienpatch/ft2-clone-plan9

View raw version
diff 3af99afd1fb732d735c34c02c926ca4d7ba5b061 uncommitted
--- /dev/null
+++ b/make-plan9.rc
@@ -1,0 +1,36 @@
+#!/bin/rc
+rfork ne
+
+fn pragma_once {
+	h=_^`"{echo $1 | sed 's,.*/,,g;s/\..*//g' | tr -d '
+'}^_h_
+	sed 's/#pragma once/#ifndef '^$h^'\n#define '^$h^'/g' $1 && echo && echo '#endif'
+}
+
+for(f in src/*.h src/*/*.h){
+	grep -s '^#pragma[ 	]+once' $f && {
+		pragma_once $f >$f.p
+		mv $f.p $f
+	}
+}
+
+fn pragma_pack {
+	sed 's/#pragma[ 	]+pack[ 	(]*(push|1)[ 	)]*/#pragma pack on/g
+s/#pragma[ 	]+pack[ 	(]*(pop|0)[ 	)]*/#pragma pack off/g
+s/#ifdef[ 	]+_MSC_VER/#if defined(_MSC_VER) || defined(__plan9__)/g' $1
+}
+
+for(f in src/*.[ch] src/*/*.[ch]){
+	grep -s '^#pragma[ 	]+pack' $f && ! grep -s '^#pragma pack off' $f && {
+		pragma_pack $f >$f.p
+		mv $f.p $f
+	}
+}
+
+{ test -d npe -o -d /sys/include/npe || {
+	hget https://git.sr.ht/~ft/npe/archive/master.tar.gz | tar xz &&
+	cd npe-master &&
+	mk install &&
+	cd .. &&
+	mv npe-master npe
+} } && mk -f mkfile.plan9 $*
--- /dev/null
+++ b/mkfile
@@ -1,0 +1,4 @@
+default:V: all
+
+%:V:
+	./make-plan9.rc $stem
--- /dev/null
+++ b/mkfile.plan9
@@ -1,0 +1,133 @@
+</$objtype/mkfile
+
+BIN=/$objtype/bin/audio
+TARG=ft2
+CFLAGS=$CFLAGS -p -Isrc -I/sys/include/npe -D__plan9__
+
+HFILES=\
+	src/ft2_about.h\
+	src/ft2_audio.h\
+	src/ft2_audioselector.h\
+	src/ft2_bmp.h\
+	src/ft2_checkboxes.h\
+	src/ft2_config.h\
+	src/ft2_cpu.h\
+	src/ft2_diskop.h\
+	src/ft2_edit.h\
+	src/ft2_events.h\
+	src/ft2_gfxdata.h\
+	src/ft2_gui.h\
+	src/ft2_header.h\
+	src/ft2_help.h\
+	src/ft2_inst_ed.h\
+	src/ft2_keyboard.h\
+	src/ft2_midi.h\
+	src/ft2_module_loader.h\
+	src/ft2_module_saver.h\
+	src/ft2_mouse.h\
+	src/ft2_nibbles.h\
+	src/ft2_palette.h\
+	src/ft2_pattern_draw.h\
+	src/ft2_pattern_ed.h\
+	src/ft2_pushbuttons.h\
+	src/ft2_radiobuttons.h\
+	src/ft2_replayer.h\
+	src/ft2_sample_ed.h\
+	src/ft2_sample_ed_features.h\
+	src/ft2_sample_loader.h\
+	src/ft2_sample_saver.h\
+	src/ft2_sampling.h\
+	src/ft2_scrollbars.h\
+	src/ft2_structs.h\
+	src/ft2_sysreqs.h\
+	src/ft2_tables.h\
+	src/ft2_textboxes.h\
+	src/ft2_trim.h\
+	src/ft2_unicode.h\
+	src/ft2_video.h\
+	src/ft2_wav_renderer.h\
+	src/helpdata/ft2_help_data.h\
+	src/mixer/ft2_center_mix.h\
+	src/mixer/ft2_mix.h\
+	src/mixer/ft2_mix_macros.h\
+	src/mixer/ft2_silence_mix.h\
+	src/mixer/ft2_windowed_sinc.h\
+	src/scopes/ft2_scope_macros.h\
+	src/scopes/ft2_scopedraw.h\
+	src/scopes/ft2_scopes.h\
+
+OFILES=\
+	src/ft2_about.$O\
+	src/ft2_audio.$O\
+	src/ft2_audioselector.$O\
+	src/ft2_bmp.$O\
+	src/ft2_checkboxes.$O\
+	src/ft2_config.$O\
+	src/ft2_diskop.$O\
+	src/ft2_edit.$O\
+	src/ft2_events.$O\
+	src/ft2_gui.$O\
+	src/ft2_help.$O\
+	src/ft2_inst_ed.$O\
+	src/ft2_keyboard.$O\
+	src/ft2_main.$O\
+	src/ft2_midi.$O\
+	src/ft2_module_loader.$O\
+	src/ft2_module_saver.$O\
+	src/ft2_mouse.$O\
+	src/ft2_nibbles.$O\
+	src/ft2_palette.$O\
+	src/ft2_pattern_draw.$O\
+	src/ft2_pattern_ed.$O\
+	src/ft2_pushbuttons.$O\
+	src/ft2_radiobuttons.$O\
+	src/ft2_replayer.$O\
+	src/ft2_sample_ed.$O\
+	src/ft2_sample_ed_features.$O\
+	src/ft2_sample_loader.$O\
+	src/ft2_sample_saver.$O\
+	src/ft2_sampling.$O\
+	src/ft2_scrollbars.$O\
+	src/ft2_structs.$O\
+	src/ft2_sysreqs.$O\
+	src/ft2_tables.$O\
+	src/ft2_textboxes.$O\
+	src/ft2_trim.$O\
+	src/ft2_unicode.$O\
+	src/ft2_video.$O\
+	src/ft2_wav_renderer.$O\
+	src/gfxdata/ft2_bmp_fonts.$O\
+	src/gfxdata/ft2_bmp_gui.$O\
+	src/gfxdata/ft2_bmp_instr.$O\
+	src/gfxdata/ft2_bmp_logo.$O\
+	src/gfxdata/ft2_bmp_looppins.$O\
+	src/gfxdata/ft2_bmp_midi.$O\
+	src/gfxdata/ft2_bmp_mouse.$O\
+	src/gfxdata/ft2_bmp_nibbles.$O\
+	src/gfxdata/ft2_bmp_scopes.$O\
+	src/mixer/ft2_center_mix.$O\
+	src/mixer/ft2_mix.$O\
+	src/mixer/ft2_silence_mix.$O\
+	src/mixer/ft2_windowed_sinc.$O\
+	src/modloaders/ft2_load_digi.$O\
+	src/modloaders/ft2_load_mod.$O\
+	src/modloaders/ft2_load_s3m.$O\
+	src/modloaders/ft2_load_stk.$O\
+	src/modloaders/ft2_load_stm.$O\
+	src/modloaders/ft2_load_xm.$O\
+	src/scopes/ft2_scopedraw.$O\
+	src/scopes/ft2_scopes.$O\
+	src/smploaders/ft2_load_aiff.$O\
+	src/smploaders/ft2_load_flac.$O\
+	src/smploaders/ft2_load_iff.$O\
+	src/smploaders/ft2_load_raw.$O\
+	src/smploaders/ft2_load_wav.$O\
+
+default:V: all
+
+CLEANFILES=$OFILES
+
+</sys/src/cmd/mkone
+
+%.$O: %.c
+	$CC $CFLAGS -o $target $stem.c
--- a/src/ft2_audio.c
+++ b/src/ft2_audio.c
@@ -5,6 +5,7 @@
 
 #include <stdio.h>
 #include <stdint.h>
+#include <math.h>
 #include "ft2_header.h"
 #include "ft2_config.h"
 #include "scopes/ft2_scopes.h"
--- a/src/ft2_scrollbars.c
+++ b/src/ft2_scrollbars.c
@@ -224,7 +224,7 @@
 			{
 				dTmp = (scrollBar->w / (double)scrollBar->end) * scrollBar->page;
 				tmp32 = (int32_t)(dTmp + 0.5);
-				realThumbLength = (int16_t)CLAMP(tmp32, 1, scrollBar->w);
+				realThumbLength = (int16_t)CLAMP(tmp32, 1, (int)scrollBar->w);
 			}
 			else
 			{
@@ -251,7 +251,7 @@
 		}
 
 		// prevent scrollbar thumb coords from being outside of the scrollbar area
-		thumbX = CLAMP(thumbX, scrollBar->x, scrollEnd-1);
+		thumbX = CLAMP((int)thumbX, (int)scrollBar->x, (int)scrollEnd-1);
 		if (thumbX+thumbW > scrollEnd)
 			thumbW = scrollEnd - thumbX;
 	}
@@ -267,7 +267,7 @@
 		{
 			dTmp = (scrollBar->h / (double)scrollBar->end) * scrollBar->page;
 			tmp32 = (int32_t)(dTmp + 0.5);
-			realThumbLength = (int16_t)CLAMP(tmp32, 1, scrollBar->h);
+			realThumbLength = (int16_t)CLAMP(tmp32, 1, (int)scrollBar->h);
 		}
 		else
 		{
@@ -293,7 +293,7 @@
 		}
 
 		// prevent scrollbar thumb coords from being outside of the scrollbar area
-		thumbY = CLAMP(thumbY, scrollBar->y, scrollEnd - 1);
+		thumbY = CLAMP((int)thumbY, (int)scrollBar->y, (int)scrollEnd - 1);
 		if (thumbY+thumbH > scrollEnd)
 			thumbH = scrollEnd - thumbY;
 	}
@@ -523,7 +523,7 @@
 					}
 
 					assert(scrollBar->w > 0);
-					scrollPos = CLAMP(scrollPos, 0, scrollBar->w);
+					scrollPos = CLAMP((int)scrollPos, 0, (int)scrollBar->w);
 
 					length = scrollBar->w + (scrollBar->realThumbLength - scrollBar->thumbW);
 					if (length < 1)
@@ -549,7 +549,7 @@
 					scrollPos = mouse.lastScrollY - scrollBar->y - mouse.saveMouseY;
 
 					assert(scrollBar->h > 0);
-					scrollPos = CLAMP(scrollPos, 0, scrollBar->h);
+					scrollPos = CLAMP((int)scrollPos, 0, (int)scrollBar->h);
 
 					length = scrollBar->h + (scrollBar->realThumbLength - scrollBar->thumbH);
 					if (length < 1)
@@ -617,7 +617,7 @@
 			}
 
 			assert(scrollBar->w > 0);
-			scrollX = CLAMP(scrollX, 0, scrollBar->w);
+			scrollX = CLAMP((int)scrollX, 0, (int)scrollBar->w);
 
 			length = scrollBar->w + (scrollBar->realThumbLength - scrollBar->thumbW);
 			if (length < 1)
@@ -641,7 +641,7 @@
 			scrollY = mouse.lastScrollY - mouse.saveMouseY - scrollBar->y;
 
 			assert(scrollBar->h > 0);
-			scrollY = CLAMP(scrollY, 0, scrollBar->h);
+			scrollY = CLAMP((int)scrollY, 0, (int)scrollBar->h);
 
 			length = scrollBar->h + (scrollBar->realThumbLength - scrollBar->thumbH);
 			if (length < 1)