shithub: alienpatch

Download patch

ref: 5d0ee6967dcaba54cb08fde6ea7835208b15894c
parent: 61074454b0c2bd2781efa495234acedf99cc86c4
author: qwx <qwx@sciops.net>
date: Sat Nov 12 02:24:56 EST 2022

add ft2-clone-plan9: for reference only, DO NOT USE

reference: gits://shithub.us/sigrid/ft2-clone

--- /dev/null
+++ b/ft2-clone-plan9
@@ -1,0 +1,267 @@
+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)