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)