ref: b947939ff7c76fc5096defd5675c43668e5e5fe4
dir: /ft2-clone-plan9/
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)