added modules
This commit is contained in:
parent
323d541283
commit
9c8c35af0c
51
modules/kb_text_shape/.build/.added_strings_w2.jai
Normal file
51
modules/kb_text_shape/.build/.added_strings_w2.jai
Normal file
@ -0,0 +1,51 @@
|
||||
// Workspace: Target Program
|
||||
|
||||
//
|
||||
// #insert text. Generated from /opt/jai/modules/Bindings_Generator/module.jai:326.
|
||||
//
|
||||
([2] string).[
|
||||
.["FLT_MIN", "FLOAT32_MIN"],
|
||||
.["FLT_MAX", "FLOAT32_MAX"],
|
||||
.["DBL_MIN", "FLOAT64_MIN"],
|
||||
.["DBL_MAX", "FLOAT64_MAX"],
|
||||
|
||||
.["SCHAR_MIN", "S8_MIN"],
|
||||
.["SCHAR_MAX", "S8_MAX"],
|
||||
.["UCHAR_MIN", "0"],
|
||||
.["UCHAR_MAX", "U8_MAX"],
|
||||
|
||||
.["SHRT_MIN", "S16_MIN"],
|
||||
.["SHRT_MAX", "S16_MAX"],
|
||||
.["USHRT_MIN", "0"],
|
||||
.["USHRT_MAX", "U16_MAX"],
|
||||
|
||||
.["INT_MIN", "S32_MIN"],
|
||||
.["INT_MAX", "S32_MAX"],
|
||||
.["UINT_MIN", "0"],
|
||||
.["UINT_MAX", "U32_MAX"],
|
||||
|
||||
.["LLONG_MIN", "S64_MIN"],
|
||||
.["LLONG_MAX", "S64_MAX"],
|
||||
.["ULLONG_MIN", "0"],
|
||||
.["ULLONG_MAX", "U64_MAX"],
|
||||
|
||||
.["INT8_MIN", "S8_MIN"],
|
||||
.["INT8_MAX", "S8_MAX"],
|
||||
.["UINT8_MAX", "U8_MAX"],
|
||||
|
||||
.["INT16_MIN", "S16_MIN"],
|
||||
.["INT16_MAX", "S16_MAX"],
|
||||
.["UINT16_MAX", "U16_MAX"],
|
||||
|
||||
.["INT32_MIN", "S32_MIN"],
|
||||
.["INT32_MAX", "S32_MAX"],
|
||||
.["UINT32_MAX", "U32_MAX"],
|
||||
|
||||
.["INT64_MIN", "S64_MIN"],
|
||||
.["INT64_MAX", "S64_MAX"],
|
||||
.["UINT64_MAX", "U64_MAX"],
|
||||
.["LONG_MIN", "S64_MIN"],
|
||||
.["LONG_MAX", "S64_MAX"],
|
||||
.["ULONG_MIN", "0"],
|
||||
.["ULONG_MAX", "U64_MAX"],
|
||||
];
|
||||
BIN
modules/kb_text_shape/android/x64/kb_text_shape.a
Normal file
BIN
modules/kb_text_shape/android/x64/kb_text_shape.a
Normal file
Binary file not shown.
BIN
modules/kb_text_shape/android/x64/kb_text_shape.so
Normal file
BIN
modules/kb_text_shape/android/x64/kb_text_shape.so
Normal file
Binary file not shown.
3715
modules/kb_text_shape/bindings.jai
Normal file
3715
modules/kb_text_shape/bindings.jai
Normal file
File diff suppressed because it is too large
Load Diff
155
modules/kb_text_shape/generate.jai
Normal file
155
modules/kb_text_shape/generate.jai
Normal file
@ -0,0 +1,155 @@
|
||||
AT_COMPILE_TIME :: true;
|
||||
|
||||
#if OS == .WINDOWS {
|
||||
LIB_BASE_NAME :: "kb_text_shape";
|
||||
} else #if OS == .MACOS {
|
||||
LIB_BASE_NAME :: "kb_text_shape";
|
||||
}
|
||||
|
||||
#if AT_COMPILE_TIME {
|
||||
#run,stallable {
|
||||
set_build_options_dc(.{do_output=false});
|
||||
options := get_build_options();
|
||||
args := options.compile_time_command_line;
|
||||
if !generate_bindings(args, options.minimum_os_version) {
|
||||
compiler_set_workspace_status(.FAILED);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
#import "System";
|
||||
|
||||
main :: () {
|
||||
set_working_directory(path_strip_filename(get_path_of_running_executable()));
|
||||
if !generate_bindings(get_command_line_arguments(), #run get_build_options().minimum_os_version) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
generate_bindings :: (args: [] string, minimum_os_version: type_of(Build_Options.minimum_os_version)) -> bool {
|
||||
target_android := array_find(args, "-android");
|
||||
target_x64 := array_find(args, "-x64");
|
||||
target_arm := array_find(args, "-arm64");
|
||||
compile := array_find(args, "-compile");
|
||||
compile_debug := array_find(args, "-debug");
|
||||
|
||||
os_target := OS;
|
||||
cpu_target := CPU;
|
||||
if target_android os_target = .ANDROID;
|
||||
if target_x64 cpu_target = .X64;
|
||||
if target_arm cpu_target = .ARM64;
|
||||
|
||||
lib_directory : string;
|
||||
if os_target == {
|
||||
case .WINDOWS;
|
||||
lib_directory = "windows";
|
||||
case .LINUX;
|
||||
lib_directory = "linux";
|
||||
case .MACOS;
|
||||
lib_directory = "macos";
|
||||
case .ANDROID;
|
||||
lib_directory = ifx cpu_target == .X64 then "android/x64" else "android/arm64";
|
||||
case .PS5;
|
||||
lib_directory = "ps5";
|
||||
case;
|
||||
assert(false);
|
||||
}
|
||||
|
||||
if compile {
|
||||
source_file := tprint("%.c", LIB_BASE_NAME);
|
||||
|
||||
make_directory_if_it_does_not_exist(lib_directory, recursive = true);
|
||||
lib_path := tprint("%/%", lib_directory, LIB_BASE_NAME);
|
||||
success := true;
|
||||
if os_target == .MACOS {
|
||||
//lib_path_x64 := tprint("%_x64", lib_path);
|
||||
lib_path_arm64 := tprint("%", lib_path);
|
||||
//macos_x64_version_arg := "-mmacos-version-min=10.13"; // Our current x64 min version
|
||||
macos_arm64_version_arg := "-mmacos-version-min=11.0"; // Earliest version that supports arm64
|
||||
// x64 variant
|
||||
//success &&= build_cpp_dynamic_lib(lib_path_x64, source_file, extra = .["-arch", "x86_64", macos_x64_version_arg], debug=compile_debug);
|
||||
//success &&= build_cpp_static_lib( lib_path_x64, source_file, extra = .["-arch", "x86_64", macos_x64_version_arg], debug=compile_debug);
|
||||
// arm64 variant
|
||||
success &&= build_cpp_dynamic_lib(lib_path, source_file, extra = .["-arch", "arm64", macos_arm64_version_arg], debug = compile_debug);
|
||||
success &&= build_cpp_static_lib( lib_path, source_file, extra = .["-arch", "arm64", macos_arm64_version_arg], debug = compile_debug);
|
||||
// create universal binaries
|
||||
//run_result := run_command("lipo", "-create", tprint("%.dylib", lib_path_x64), tprint("%.dylib", lib_path_arm64), "-output", tprint("%.dylib", lib_path));
|
||||
//success &&= (run_result.exit_code == 0);
|
||||
//run_result = run_command("lipo", "-create", tprint("%.a", lib_path_x64), tprint("%.a", lib_path_arm64), "-output", tprint("%.a", lib_path));
|
||||
//success &&= (run_result.exit_code == 0);
|
||||
} else {
|
||||
extra: [..] string;
|
||||
if os_target == .ANDROID {
|
||||
_, target_triple_with_sdk := get_android_target_triple(cpu_target);
|
||||
array_add(*extra, "-target", target_triple_with_sdk);
|
||||
}
|
||||
if os_target != .WINDOWS {
|
||||
array_add(*extra, "-fPIC");
|
||||
}
|
||||
|
||||
if os_target == .WINDOWS {
|
||||
array_add(*extra, "/MD");
|
||||
}
|
||||
|
||||
if os_target != .PS5 {
|
||||
success &&= build_cpp_dynamic_lib(lib_path, source_file, target = os_target, debug = compile_debug, extra = extra);
|
||||
}
|
||||
success &&= build_cpp_static_lib(lib_path, source_file, target = os_target, debug = compile_debug, extra = extra);
|
||||
}
|
||||
|
||||
if !success return false;
|
||||
}
|
||||
|
||||
options: Generate_Bindings_Options;
|
||||
options.os = os_target;
|
||||
options.cpu = cpu_target;
|
||||
{
|
||||
using options;
|
||||
|
||||
try_to_preserve_comments = false;
|
||||
|
||||
array_add(*libpaths, lib_directory);
|
||||
array_add(*libnames, LIB_BASE_NAME);
|
||||
array_add(*source_files, tprint("%.h", LIB_BASE_NAME));
|
||||
|
||||
generate_library_declarations = false;
|
||||
footer = tprint(FOOTER_TEMPLATE, LIB_BASE_NAME);
|
||||
|
||||
auto_detect_enum_prefixes = true;
|
||||
log_stripped_declarations = false;
|
||||
generate_compile_time_struct_checks = false;
|
||||
}
|
||||
|
||||
output_filename := tprint("%.jai", lib_directory);
|
||||
return generate_bindings(options, output_filename);
|
||||
}
|
||||
|
||||
FOOTER_TEMPLATE :: #string END
|
||||
|
||||
#if OS == .WINDOWS {
|
||||
%1 :: #library "windows/%1";
|
||||
} else #if OS == .LINUX {
|
||||
%1 :: #library "linux/%1";
|
||||
} else #if OS == .MACOS {
|
||||
%1 :: #library "macos/%1";
|
||||
} else #if OS == .ANDROID {
|
||||
#if CPU == .X64 {
|
||||
%1 :: #library "android/x64/%1";
|
||||
} else #if CPU == .ARM64 {
|
||||
%1 :: #library "android/arm64/%1";
|
||||
}
|
||||
} else #if OS == .PS5 {
|
||||
%1 :: #library "ps5/%1";
|
||||
} else {
|
||||
#assert false;
|
||||
}
|
||||
|
||||
END
|
||||
|
||||
#import "Basic";
|
||||
#import "BuildCpp";
|
||||
#import "Bindings_Generator";
|
||||
#import "Compiler";
|
||||
#import "File";
|
||||
#import "Process";
|
||||
#import "Toolchains/Android";
|
||||
13
modules/kb_text_shape/kb_text_shape.c
Normal file
13
modules/kb_text_shape/kb_text_shape.c
Normal file
@ -0,0 +1,13 @@
|
||||
#ifdef WIN32
|
||||
#define KBTS_EXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define KBTS_EXPORT
|
||||
#endif
|
||||
|
||||
#define KB_TEXT_SHAPE_IMPLEMENTATION
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "kb_text_shape.h"
|
||||
23192
modules/kb_text_shape/kb_text_shape.h
Normal file
23192
modules/kb_text_shape/kb_text_shape.h
Normal file
File diff suppressed because it is too large
Load Diff
3694
modules/kb_text_shape/macos.jai
Normal file
3694
modules/kb_text_shape/macos.jai
Normal file
File diff suppressed because it is too large
Load Diff
BIN
modules/kb_text_shape/macos/kb_text_shape.a
Normal file
BIN
modules/kb_text_shape/macos/kb_text_shape.a
Normal file
Binary file not shown.
BIN
modules/kb_text_shape/macos/kb_text_shape.dylib
Executable file
BIN
modules/kb_text_shape/macos/kb_text_shape.dylib
Executable file
Binary file not shown.
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.xcode.dsym.kb_text_shape.dylib</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>dSYM</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@ -0,0 +1,133 @@
|
||||
---
|
||||
triple: 'arm64-apple-darwin'
|
||||
binary-path: 'macos/kb_text_shape.dylib'
|
||||
relocations:
|
||||
- { offset: 0x26, size: 0x8, addend: 0x0, symName: _kbts_FeatureOverride, symObjAddr: 0x0, symBinAddr: 0x618, symSize: 0x14 }
|
||||
- { offset: 0x4E, size: 0x8, addend: 0x0, symName: _kbts_ScriptProperties, symObjAddr: 0x150FC, symBinAddr: 0x1569C, symSize: 0x0 }
|
||||
- { offset: 0xB3, size: 0x8, addend: 0x0, symName: _kbts_UnicodeDecomposition_Data, symObjAddr: 0x19A80, symBinAddr: 0x1A020, symSize: 0x0 }
|
||||
- { offset: 0xDD, size: 0x8, addend: 0x0, symName: _kbts_UnicodeDecomposition_PageIndices, symObjAddr: 0x1567E, symBinAddr: 0x15C1E, symSize: 0x0 }
|
||||
- { offset: 0x107, size: 0x8, addend: 0x0, symName: _kbts_UnicodeJoiningType_Data, symObjAddr: 0x24A80, symBinAddr: 0x25020, symSize: 0x0 }
|
||||
- { offset: 0x12A, size: 0x8, addend: 0x0, symName: _kbts_UnicodeJoiningType_PageIndices, symObjAddr: 0x28480, symBinAddr: 0x28A20, symSize: 0x0 }
|
||||
- { offset: 0x14D, size: 0x8, addend: 0x0, symName: _kbts_UnicodeFlags_Data, symObjAddr: 0x2A67F, symBinAddr: 0x2AC1F, symSize: 0x0 }
|
||||
- { offset: 0x170, size: 0x8, addend: 0x0, symName: _kbts_UnicodeFlags_PageIndices, symObjAddr: 0x31DFF, symBinAddr: 0x3239F, symSize: 0x0 }
|
||||
- { offset: 0x186, size: 0x8, addend: 0x0, symName: _kbts_UnicodeSyllabicInfo_Data, symObjAddr: 0x361FE, symBinAddr: 0x3679E, symSize: 0x0 }
|
||||
- { offset: 0x1B0, size: 0x8, addend: 0x0, symName: _kbts_UnicodeSyllabicInfo_PageIndices, symObjAddr: 0x33FFE, symBinAddr: 0x3459E, symSize: 0x0 }
|
||||
- { offset: 0x1C6, size: 0x8, addend: 0x0, symName: _kbts_UnicodeCombiningClass_Data, symObjAddr: 0x3C0FE, symBinAddr: 0x3C69E, symSize: 0x0 }
|
||||
- { offset: 0x1E9, size: 0x8, addend: 0x0, symName: _kbts_UnicodeCombiningClass_PageIndices, symObjAddr: 0x3F0FE, symBinAddr: 0x3F69E, symSize: 0x0 }
|
||||
- { offset: 0x1FF, size: 0x8, addend: 0x0, symName: _kbts_UnicodeUseClass_Data, symObjAddr: 0x423FC, symBinAddr: 0x4299C, symSize: 0x0 }
|
||||
- { offset: 0x222, size: 0x8, addend: 0x0, symName: _kbts_UnicodeUseClass_PageIndices, symObjAddr: 0x412FD, symBinAddr: 0x4189D, symSize: 0x0 }
|
||||
- { offset: 0x245, size: 0x8, addend: 0x0, symName: _kbts_UnicodeScript_Data, symObjAddr: 0x487FB, symBinAddr: 0x48D9B, symSize: 0x0 }
|
||||
- { offset: 0x268, size: 0x8, addend: 0x0, symName: _kbts_UnicodeScript_PageIndices, symObjAddr: 0x465FC, symBinAddr: 0x46B9C, symSize: 0x0 }
|
||||
- { offset: 0x27E, size: 0x8, addend: 0x0, symName: _kbts_UnicodeParentInfo_Data, symObjAddr: 0x501FC, symBinAddr: 0x5079C, symSize: 0x0 }
|
||||
- { offset: 0x2A1, size: 0x8, addend: 0x0, symName: _kbts_UnicodeParentInfo_PageIndices, symObjAddr: 0x6497C, symBinAddr: 0x64F1C, symSize: 0x0 }
|
||||
- { offset: 0x2C4, size: 0x8, addend: 0x0, symName: _kbts_ShaperOpLists, symObjAddr: 0x9A420, symBinAddr: 0x9C010, symSize: 0x0 }
|
||||
- { offset: 0x31B, size: 0x8, addend: 0x0, symName: _kbts_Ops_Default, symObjAddr: 0x9A6C8, symBinAddr: 0xA0280, symSize: 0x0 }
|
||||
- { offset: 0x33D, size: 0x8, addend: 0x0, symName: _kbts_Ops_ArabicRclt, symObjAddr: 0x9A6E5, symBinAddr: 0xA029D, symSize: 0x0 }
|
||||
- { offset: 0x35F, size: 0x8, addend: 0x0, symName: _kbts_Ops_Hangul, symObjAddr: 0x9A723, symBinAddr: 0xA02DB, symSize: 0x0 }
|
||||
- { offset: 0x381, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic0, symObjAddr: 0x9A743, symBinAddr: 0xA02FB, symSize: 0x0 }
|
||||
- { offset: 0x3A3, size: 0x8, addend: 0x0, symName: _kbts_Ops_Khmer0, symObjAddr: 0x9A74F, symBinAddr: 0xA0307, symSize: 0x0 }
|
||||
- { offset: 0x3B9, size: 0x8, addend: 0x0, symName: _kbts_Ops_Tibetan, symObjAddr: 0x9A75B, symBinAddr: 0xA0313, symSize: 0x0 }
|
||||
- { offset: 0x3DB, size: 0x8, addend: 0x0, symName: _kbts_Ops_Use0, symObjAddr: 0x9A76F, symBinAddr: 0xA0327, symSize: 0x0 }
|
||||
- { offset: 0x3FD, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic1, symObjAddr: 0x9A4B0, symBinAddr: 0xA0068, symSize: 0x0 }
|
||||
- { offset: 0x41F, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic2, symObjAddr: 0x9A4D1, symBinAddr: 0xA0089, symSize: 0x0 }
|
||||
- { offset: 0x441, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic3, symObjAddr: 0x9A4D9, symBinAddr: 0xA0091, symSize: 0x0 }
|
||||
- { offset: 0x463, size: 0x8, addend: 0x0, symName: _kbts_Ops_Use1, symObjAddr: 0x9A4EB, symBinAddr: 0xA00A3, symSize: 0x0 }
|
||||
- { offset: 0x485, size: 0x8, addend: 0x0, symName: _kbts_Ops_Use3, symObjAddr: 0x9A500, symBinAddr: 0xA00B8, symSize: 0x0 }
|
||||
- { offset: 0x49B, size: 0x8, addend: 0x0, symName: _kbts_Ops_Khmer1, symObjAddr: 0x9A51D, symBinAddr: 0xA00D5, symSize: 0x0 }
|
||||
- { offset: 0x4BD, size: 0x8, addend: 0x0, symName: _kbts_Ops_Khmer3, symObjAddr: 0x9A526, symBinAddr: 0xA00DE, symSize: 0x0 }
|
||||
- { offset: 0x4D3, size: 0x8, addend: 0x0, symName: _kbts_Ops_Myanmar1, symObjAddr: 0x9A53B, symBinAddr: 0xA00F3, symSize: 0x0 }
|
||||
- { offset: 0x4F5, size: 0x8, addend: 0x0, symName: _kbts_Ops_Myanmar2, symObjAddr: 0x9A53F, symBinAddr: 0xA00F7, symSize: 0x0 }
|
||||
- { offset: 0x50B, size: 0x8, addend: 0x0, symName: _kbts_Ops_Myanmar3, symObjAddr: 0x9A54B, symBinAddr: 0xA0103, symSize: 0x0 }
|
||||
- { offset: 0x52D, size: 0x8, addend: 0x0, symName: _kbts_ShaperFeatures, symObjAddr: 0x9A568, symBinAddr: 0xA0120, symSize: 0x0 }
|
||||
- { offset: 0x57E, size: 0x8, addend: 0x0, symName: _kbts_Ops_ArabicNoRclt, symObjAddr: 0x9A688, symBinAddr: 0xA0240, symSize: 0x0 }
|
||||
- { offset: 0x5A5, size: 0x8, addend: 0x0, symName: _kbts_UnicodeParentDeltas, symObjAddr: 0x7597C, symBinAddr: 0x75F1C, symSize: 0x0 }
|
||||
- { offset: 0x5CF, size: 0x8, addend: 0x0, symName: _kbts_IndicSyllabicTransition, symObjAddr: 0x773B8, symBinAddr: 0x77958, symSize: 0x0 }
|
||||
- { offset: 0x5F7, size: 0x8, addend: 0x0, symName: _kbts_UseTransition, symObjAddr: 0x776EC, symBinAddr: 0x77C8C, symSize: 0x0 }
|
||||
- { offset: 0x61F, size: 0x8, addend: 0x0, symName: _kbts_KhmerSyllabicTransition, symObjAddr: 0x77DD0, symBinAddr: 0x78370, symSize: 0x0 }
|
||||
- { offset: 0x647, size: 0x8, addend: 0x0, symName: _kbts_MyanmarSyllabicTransition, symObjAddr: 0x7803D, symBinAddr: 0x785DD, symSize: 0x0 }
|
||||
- { offset: 0x66F, size: 0x8, addend: 0x0, symName: _kbts_CmapFormatPrecedence, symObjAddr: 0x15670, symBinAddr: 0x15C10, symSize: 0x0 }
|
||||
- { offset: 0x696, size: 0x8, addend: 0x0, symName: _kbts_UnicodeBidirectionalClass_Data, symObjAddr: 0x784B8, symBinAddr: 0x78A58, symSize: 0x0 }
|
||||
- { offset: 0x6B9, size: 0x8, addend: 0x0, symName: _kbts_UnicodeBidirectionalClass_PageIndices, symObjAddr: 0x7F838, symBinAddr: 0x7FDD8, symSize: 0x0 }
|
||||
- { offset: 0x6CF, size: 0x8, addend: 0x0, symName: _kbts_UnicodeGraphemeBreakClass_Data, symObjAddr: 0x81A37, symBinAddr: 0x81FD7, symSize: 0x0 }
|
||||
- { offset: 0x6F2, size: 0x8, addend: 0x0, symName: _kbts_UnicodeGraphemeBreakClass_PageIndices, symObjAddr: 0x868B7, symBinAddr: 0x86E57, symSize: 0x0 }
|
||||
- { offset: 0x708, size: 0x8, addend: 0x0, symName: _kbts_UnicodeLineBreakClass_Data, symObjAddr: 0x88AB6, symBinAddr: 0x89056, symSize: 0x0 }
|
||||
- { offset: 0x72B, size: 0x8, addend: 0x0, symName: _kbts_UnicodeLineBreakClass_PageIndices, symObjAddr: 0x8F336, symBinAddr: 0x8F8D6, symSize: 0x0 }
|
||||
- { offset: 0x741, size: 0x8, addend: 0x0, symName: _kbts_UnicodeWordBreakClass_Data, symObjAddr: 0x93734, symBinAddr: 0x93CD4, symSize: 0x0 }
|
||||
- { offset: 0x764, size: 0x8, addend: 0x0, symName: _kbts_UnicodeWordBreakClass_PageIndices, symObjAddr: 0x91535, symBinAddr: 0x91AD5, symSize: 0x0 }
|
||||
- { offset: 0x77A, size: 0x8, addend: 0x0, symName: _kbts_GraphemeBreakTransition, symObjAddr: 0x9A334, symBinAddr: 0x9A8D4, symSize: 0x0 }
|
||||
- { offset: 0x29C7, size: 0x8, addend: 0x0, symName: _kbts_FeatureOverride, symObjAddr: 0x0, symBinAddr: 0x618, symSize: 0x14 }
|
||||
- { offset: 0x2A58, size: 0x8, addend: 0x0, symName: _kbts_GlyphConfig, symObjAddr: 0x14, symBinAddr: 0x62C, symSize: 0x60 }
|
||||
- { offset: 0x2B35, size: 0x8, addend: 0x0, symName: _kbts_InferScript, symObjAddr: 0x74, symBinAddr: 0x68C, symSize: 0x80 }
|
||||
- { offset: 0x2CD3, size: 0x8, addend: 0x0, symName: _kbts_CodepointToGlyph, symObjAddr: 0xF4, symBinAddr: 0x70C, symSize: 0x348 }
|
||||
- { offset: 0x309C, size: 0x8, addend: 0x0, symName: _kbts_GlyphClasses, symObjAddr: 0x43C, symBinAddr: 0xA54, symSize: 0x16C }
|
||||
- { offset: 0x32D3, size: 0x8, addend: 0x0, symName: _kbts_SizeOfShapeState, symObjAddr: 0x5A8, symBinAddr: 0xBC0, symSize: 0x20 }
|
||||
- { offset: 0x3310, size: 0x8, addend: 0x0, symName: _kbts_PlaceShapeState, symObjAddr: 0x5C8, symBinAddr: 0xBE0, symSize: 0x24 }
|
||||
- { offset: 0x33BB, size: 0x8, addend: 0x0, symName: _kbts_CreateShapeState, symObjAddr: 0x5EC, symBinAddr: 0xC04, symSize: 0x48 }
|
||||
- { offset: 0x34AB, size: 0x8, addend: 0x0, symName: _kbts_FreeShapeState, symObjAddr: 0x634, symBinAddr: 0xC4C, symSize: 0xC }
|
||||
- { offset: 0x34EA, size: 0x8, addend: 0x0, symName: _kbts_ResetShapeState, symObjAddr: 0x640, symBinAddr: 0xC58, symSize: 0x8 }
|
||||
- { offset: 0x3A52, size: 0x8, addend: 0x0, symName: _kbts_ShapeConfig, symObjAddr: 0x648, symBinAddr: 0xC60, symSize: 0x9CC }
|
||||
- { offset: 0x406D, size: 0x8, addend: 0x0, symName: _kbts_FeatureToId, symObjAddr: 0xD6BC, symBinAddr: 0xDCD4, symSize: 0x1DF0 }
|
||||
- { offset: 0x40A8, size: 0x8, addend: 0x0, symName: _kbts_DoSubstitution, symObjAddr: 0xF4AC, symBinAddr: 0xFAC4, symSize: 0xF50 }
|
||||
- { offset: 0x4E82, size: 0x8, addend: 0x0, symName: _kbts_ShapeConfig.cold.1, symObjAddr: 0x14490, symBinAddr: 0x14AB0, symSize: 0x24 }
|
||||
- { offset: 0x5B13, size: 0x8, addend: 0x0, symName: _kbts_Shape, symObjAddr: 0x1014, symBinAddr: 0x162C, symSize: 0x26CC }
|
||||
- { offset: 0x6E0C, size: 0x8, addend: 0x0, symName: _kbts_ExecuteOp, symObjAddr: 0x36E0, symBinAddr: 0x3CF8, symSize: 0x26BC }
|
||||
- { offset: 0x83FE, size: 0x8, addend: 0x0, symName: _kbts_Cursor, symObjAddr: 0x5D9C, symBinAddr: 0x63B4, symSize: 0xC }
|
||||
- { offset: 0x8408, size: 0x8, addend: 0x0, symName: _kbts_WouldSubstitute, symObjAddr: 0x13094, symBinAddr: 0x136AC, symSize: 0x154 }
|
||||
- { offset: 0x85FD, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapFeature, symObjAddr: 0x131E8, symBinAddr: 0x13800, symSize: 0x184 }
|
||||
- { offset: 0x8916, size: 0x8, addend: 0x0, symName: _kbts_BeginFeatures, symObjAddr: 0x11B1C, symBinAddr: 0x12134, symSize: 0x17C }
|
||||
- { offset: 0x8ACE, size: 0x8, addend: 0x0, symName: _kbts_DoSingleAdjustment, symObjAddr: 0x11C98, symBinAddr: 0x122B0, symSize: 0x1268 }
|
||||
- { offset: 0x9B92, size: 0x8, addend: 0x0, symName: _kbts_UnpackValueRecord, symObjAddr: 0x12F00, symBinAddr: 0x13518, symSize: 0xB8 }
|
||||
- { offset: 0x9BAF, size: 0x8, addend: 0x0, symName: _kbts_ExecuteOp.cold.3, symObjAddr: 0x14520, symBinAddr: 0x14AD4, symSize: 0x28 }
|
||||
- { offset: 0x9BD9, size: 0x8, addend: 0x0, symName: _kbts_Cursor, symObjAddr: 0x5D9C, symBinAddr: 0x63B4, symSize: 0xC }
|
||||
- { offset: 0x9C14, size: 0x8, addend: 0x0, symName: _kbts_PositionGlyph, symObjAddr: 0x5DA8, symBinAddr: 0x63C0, symSize: 0x80 }
|
||||
- { offset: 0x9D8E, size: 0x8, addend: 0x0, symName: _kbts_ReadFontHeader, symObjAddr: 0x5E28, symBinAddr: 0x6440, symSize: 0x7A0 }
|
||||
- { offset: 0xAD3F, size: 0x8, addend: 0x0, symName: _kbts_ReadFontData, symObjAddr: 0x65C8, symBinAddr: 0x6BE0, symSize: 0x17EC }
|
||||
- { offset: 0xC8A7, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapClassDefinition, symObjAddr: 0x7DB4, symBinAddr: 0x83CC, symSize: 0x17C }
|
||||
- { offset: 0xC8B1, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapClassDefinition, symObjAddr: 0x7DB4, symBinAddr: 0x83CC, symSize: 0x17C }
|
||||
- { offset: 0xC8E7, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapClassDefinition, symObjAddr: 0x7DB4, symBinAddr: 0x83CC, symSize: 0x17C }
|
||||
- { offset: 0xCA67, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapCoverage, symObjAddr: 0x7F30, symBinAddr: 0x8548, symSize: 0x154 }
|
||||
- { offset: 0xCA9D, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapCoverage, symObjAddr: 0x7F30, symBinAddr: 0x8548, symSize: 0x154 }
|
||||
- { offset: 0xCBAB, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapGsubGposCommon, symObjAddr: 0x8084, symBinAddr: 0x869C, symSize: 0xBBC }
|
||||
- { offset: 0xD6A9, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapLookup, symObjAddr: 0x8C40, symBinAddr: 0x9258, symSize: 0x13C }
|
||||
- { offset: 0xD6F5, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapLookup, symObjAddr: 0x8C40, symBinAddr: 0x9258, symSize: 0x13C }
|
||||
- { offset: 0xD81F, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapSequenceContextSubtable, symObjAddr: 0x1336C, symBinAddr: 0x13984, symSize: 0x64C }
|
||||
- { offset: 0xDFAB, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapChainedSequenceContextSubtable, symObjAddr: 0x139B8, symBinAddr: 0x13FD0, symSize: 0x240 }
|
||||
- { offset: 0xE384, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapGposLookupSubtable, symObjAddr: 0x8D7C, symBinAddr: 0x9394, symSize: 0xAA8 }
|
||||
- { offset: 0xEF5E, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapFeature, symObjAddr: 0x131E8, symBinAddr: 0x13800, symSize: 0x184 }
|
||||
- { offset: 0xEF94, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapFeature, symObjAddr: 0x131E8, symBinAddr: 0x13800, symSize: 0x184 }
|
||||
- { offset: 0xF290, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapValueRecord, symObjAddr: 0x13E60, symBinAddr: 0x14478, symSize: 0x174 }
|
||||
- { offset: 0xF3D3, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapMarkArray, symObjAddr: 0x140F4, symBinAddr: 0x1470C, symSize: 0x168 }
|
||||
- { offset: 0xF546, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapAnchor, symObjAddr: 0x13FD4, symBinAddr: 0x145EC, symSize: 0x120 }
|
||||
- { offset: 0xF57E, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapAnchor, symObjAddr: 0x13FD4, symBinAddr: 0x145EC, symSize: 0x120 }
|
||||
- { offset: 0xF753, size: 0x8, addend: 0x0, symName: _kbts_PostReadFontInitialize, symObjAddr: 0x9824, symBinAddr: 0x9E3C, symSize: 0x13F8 }
|
||||
- { offset: 0x10A9B, size: 0x8, addend: 0x0, symName: _kbts_GlyphPassesLookupFilter, symObjAddr: 0xAC2C, symBinAddr: 0xB244, symSize: 0x10C }
|
||||
- { offset: 0x10B9D, size: 0x8, addend: 0x0, symName: _kbts_FontIsValid, symObjAddr: 0xAC1C, symBinAddr: 0xB234, symSize: 0x10 }
|
||||
- { offset: 0x10BC3, size: 0x8, addend: 0x0, symName: _kbts_GlyphClassFromTable, symObjAddr: 0xAD38, symBinAddr: 0xB350, symSize: 0x94 }
|
||||
- { offset: 0x10C4F, size: 0x8, addend: 0x0, symName: _kbts_FontFromFile, symObjAddr: 0xADCC, symBinAddr: 0xB3E4, symSize: 0x10C }
|
||||
- { offset: 0x110A5, size: 0x8, addend: 0x0, symName: _kbts_FreeFont, symObjAddr: 0xAED8, symBinAddr: 0xB4F0, symSize: 0x3C }
|
||||
- { offset: 0x110E6, size: 0x8, addend: 0x0, symName: _kbts_BreakStateIsValid, symObjAddr: 0xAF14, symBinAddr: 0xB52C, symSize: 0x10 }
|
||||
- { offset: 0x1110C, size: 0x8, addend: 0x0, symName: _kbts_BreakFlush, symObjAddr: 0xAF24, symBinAddr: 0xB53C, symSize: 0x10 }
|
||||
- { offset: 0x1114B, size: 0x8, addend: 0x0, symName: _kbts_BreakAddCodepoint_, symObjAddr: 0xAF34, symBinAddr: 0xB54C, symSize: 0x2564 }
|
||||
- { offset: 0x112F1, size: 0x8, addend: 0x0, symName: _kbts_BreakAddCodepoint_, symObjAddr: 0xAF34, symBinAddr: 0xB54C, symSize: 0x2564 }
|
||||
- { offset: 0x11BE1, size: 0x8, addend: 0x0, symName: _kbts_DoLineBreak, symObjAddr: 0x1435C, symBinAddr: 0x14974, symSize: 0x134 }
|
||||
- { offset: 0x11D32, size: 0x8, addend: 0x0, symName: _kbts_BreakAddCodepoint, symObjAddr: 0xD498, symBinAddr: 0xDAB0, symSize: 0x48 }
|
||||
- { offset: 0x11DED, size: 0x8, addend: 0x0, symName: _kbts_Break, symObjAddr: 0xD4E0, symBinAddr: 0xDAF8, symSize: 0x68 }
|
||||
- { offset: 0x11E5C, size: 0x8, addend: 0x0, symName: _kbts_BeginBreak, symObjAddr: 0xD548, symBinAddr: 0xDB60, symSize: 0x44 }
|
||||
- { offset: 0x11EA3, size: 0x8, addend: 0x0, symName: _kbts_DecodeUtf8, symObjAddr: 0xD58C, symBinAddr: 0xDBA4, symSize: 0x108 }
|
||||
- { offset: 0x11F58, size: 0x8, addend: 0x0, symName: _kbts_ShaperIsComplex, symObjAddr: 0xD694, symBinAddr: 0xDCAC, symSize: 0xC }
|
||||
- { offset: 0x11FA4, size: 0x8, addend: 0x0, symName: _kbts_ScriptIsComplex, symObjAddr: 0xD6A0, symBinAddr: 0xDCB8, symSize: 0x1C }
|
||||
- { offset: 0x120F5, size: 0x8, addend: 0x0, symName: _kbts_GlyphsIncludedInLookupSubtable, symObjAddr: 0x103FC, symBinAddr: 0x10A14, symSize: 0x320 }
|
||||
- { offset: 0x123BA, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup, symObjAddr: 0x1071C, symBinAddr: 0x10D34, symSize: 0x1218 }
|
||||
- { offset: 0x134D3, size: 0x8, addend: 0x0, symName: _kbts_MatchCoverageSequence, symObjAddr: 0x11934, symBinAddr: 0x11F4C, symSize: 0x1E8 }
|
||||
- { offset: 0x13727, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.3, symObjAddr: 0x14694, symBinAddr: 0x14B4C, symSize: 0x28 }
|
||||
- { offset: 0x1373E, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.2, symObjAddr: 0x1466C, symBinAddr: 0x14B24, symSize: 0x28 }
|
||||
- { offset: 0x13755, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.1, symObjAddr: 0x14644, symBinAddr: 0x14AFC, symSize: 0x28 }
|
||||
- { offset: 0x1376C, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.5, symObjAddr: 0x146E4, symBinAddr: 0x14B9C, symSize: 0x28 }
|
||||
- { offset: 0x13783, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.4, symObjAddr: 0x146BC, symBinAddr: 0x14B74, symSize: 0x28 }
|
||||
- { offset: 0x13A8C, size: 0x8, addend: 0x0, symName: _kbts_AttachGlyph, symObjAddr: 0x12FB8, symBinAddr: 0x135D0, symSize: 0xDC }
|
||||
- { offset: 0x13B67, size: 0x8, addend: 0x0, symName: _kbts_UnpackValueRecord, symObjAddr: 0x12F00, symBinAddr: 0x13518, symSize: 0xB8 }
|
||||
- { offset: 0x13C1D, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapChainedSequenceRuleSet, symObjAddr: 0x13BF8, symBinAddr: 0x14210, symSize: 0x268 }
|
||||
- { offset: 0x13EAC, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapDevice, symObjAddr: 0x1425C, symBinAddr: 0x14874, symSize: 0x100 }
|
||||
- { offset: 0x13EE2, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapDevice, symObjAddr: 0x1425C, symBinAddr: 0x14874, symSize: 0x100 }
|
||||
- { offset: 0x13FA7, size: 0x8, addend: 0x0, symName: _OUTLINED_FUNCTION_0, symObjAddr: 0x14754, symBinAddr: 0x14AA8, symSize: 0x8 }
|
||||
...
|
||||
BIN
modules/kb_text_shape/macos/kb_text_shape_arm64.a
Normal file
BIN
modules/kb_text_shape/macos/kb_text_shape_arm64.a
Normal file
Binary file not shown.
BIN
modules/kb_text_shape/macos/kb_text_shape_arm64.dylib
Executable file
BIN
modules/kb_text_shape/macos/kb_text_shape_arm64.dylib
Executable file
Binary file not shown.
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.xcode.dsym.kb_text_shape_arm64.dylib</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>dSYM</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@ -0,0 +1,133 @@
|
||||
---
|
||||
triple: 'arm64-apple-darwin'
|
||||
binary-path: 'macos/kb_text_shape_arm64.dylib'
|
||||
relocations:
|
||||
- { offset: 0x26, size: 0x8, addend: 0x0, symName: _kbts_FeatureOverride, symObjAddr: 0x0, symBinAddr: 0x618, symSize: 0x14 }
|
||||
- { offset: 0x4E, size: 0x8, addend: 0x0, symName: _kbts_ScriptProperties, symObjAddr: 0x150FC, symBinAddr: 0x1569C, symSize: 0x0 }
|
||||
- { offset: 0xB3, size: 0x8, addend: 0x0, symName: _kbts_UnicodeDecomposition_Data, symObjAddr: 0x19A80, symBinAddr: 0x1A020, symSize: 0x0 }
|
||||
- { offset: 0xDD, size: 0x8, addend: 0x0, symName: _kbts_UnicodeDecomposition_PageIndices, symObjAddr: 0x1567E, symBinAddr: 0x15C1E, symSize: 0x0 }
|
||||
- { offset: 0x107, size: 0x8, addend: 0x0, symName: _kbts_UnicodeJoiningType_Data, symObjAddr: 0x24A80, symBinAddr: 0x25020, symSize: 0x0 }
|
||||
- { offset: 0x12A, size: 0x8, addend: 0x0, symName: _kbts_UnicodeJoiningType_PageIndices, symObjAddr: 0x28480, symBinAddr: 0x28A20, symSize: 0x0 }
|
||||
- { offset: 0x14D, size: 0x8, addend: 0x0, symName: _kbts_UnicodeFlags_Data, symObjAddr: 0x2A67F, symBinAddr: 0x2AC1F, symSize: 0x0 }
|
||||
- { offset: 0x170, size: 0x8, addend: 0x0, symName: _kbts_UnicodeFlags_PageIndices, symObjAddr: 0x31DFF, symBinAddr: 0x3239F, symSize: 0x0 }
|
||||
- { offset: 0x186, size: 0x8, addend: 0x0, symName: _kbts_UnicodeSyllabicInfo_Data, symObjAddr: 0x361FE, symBinAddr: 0x3679E, symSize: 0x0 }
|
||||
- { offset: 0x1B0, size: 0x8, addend: 0x0, symName: _kbts_UnicodeSyllabicInfo_PageIndices, symObjAddr: 0x33FFE, symBinAddr: 0x3459E, symSize: 0x0 }
|
||||
- { offset: 0x1C6, size: 0x8, addend: 0x0, symName: _kbts_UnicodeCombiningClass_Data, symObjAddr: 0x3C0FE, symBinAddr: 0x3C69E, symSize: 0x0 }
|
||||
- { offset: 0x1E9, size: 0x8, addend: 0x0, symName: _kbts_UnicodeCombiningClass_PageIndices, symObjAddr: 0x3F0FE, symBinAddr: 0x3F69E, symSize: 0x0 }
|
||||
- { offset: 0x1FF, size: 0x8, addend: 0x0, symName: _kbts_UnicodeUseClass_Data, symObjAddr: 0x423FC, symBinAddr: 0x4299C, symSize: 0x0 }
|
||||
- { offset: 0x222, size: 0x8, addend: 0x0, symName: _kbts_UnicodeUseClass_PageIndices, symObjAddr: 0x412FD, symBinAddr: 0x4189D, symSize: 0x0 }
|
||||
- { offset: 0x245, size: 0x8, addend: 0x0, symName: _kbts_UnicodeScript_Data, symObjAddr: 0x487FB, symBinAddr: 0x48D9B, symSize: 0x0 }
|
||||
- { offset: 0x268, size: 0x8, addend: 0x0, symName: _kbts_UnicodeScript_PageIndices, symObjAddr: 0x465FC, symBinAddr: 0x46B9C, symSize: 0x0 }
|
||||
- { offset: 0x27E, size: 0x8, addend: 0x0, symName: _kbts_UnicodeParentInfo_Data, symObjAddr: 0x501FC, symBinAddr: 0x5079C, symSize: 0x0 }
|
||||
- { offset: 0x2A1, size: 0x8, addend: 0x0, symName: _kbts_UnicodeParentInfo_PageIndices, symObjAddr: 0x6497C, symBinAddr: 0x64F1C, symSize: 0x0 }
|
||||
- { offset: 0x2C4, size: 0x8, addend: 0x0, symName: _kbts_ShaperOpLists, symObjAddr: 0x9A420, symBinAddr: 0x9C010, symSize: 0x0 }
|
||||
- { offset: 0x31B, size: 0x8, addend: 0x0, symName: _kbts_Ops_Default, symObjAddr: 0x9A6C8, symBinAddr: 0xA0280, symSize: 0x0 }
|
||||
- { offset: 0x33D, size: 0x8, addend: 0x0, symName: _kbts_Ops_ArabicRclt, symObjAddr: 0x9A6E5, symBinAddr: 0xA029D, symSize: 0x0 }
|
||||
- { offset: 0x35F, size: 0x8, addend: 0x0, symName: _kbts_Ops_Hangul, symObjAddr: 0x9A723, symBinAddr: 0xA02DB, symSize: 0x0 }
|
||||
- { offset: 0x381, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic0, symObjAddr: 0x9A743, symBinAddr: 0xA02FB, symSize: 0x0 }
|
||||
- { offset: 0x3A3, size: 0x8, addend: 0x0, symName: _kbts_Ops_Khmer0, symObjAddr: 0x9A74F, symBinAddr: 0xA0307, symSize: 0x0 }
|
||||
- { offset: 0x3B9, size: 0x8, addend: 0x0, symName: _kbts_Ops_Tibetan, symObjAddr: 0x9A75B, symBinAddr: 0xA0313, symSize: 0x0 }
|
||||
- { offset: 0x3DB, size: 0x8, addend: 0x0, symName: _kbts_Ops_Use0, symObjAddr: 0x9A76F, symBinAddr: 0xA0327, symSize: 0x0 }
|
||||
- { offset: 0x3FD, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic1, symObjAddr: 0x9A4B0, symBinAddr: 0xA0068, symSize: 0x0 }
|
||||
- { offset: 0x41F, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic2, symObjAddr: 0x9A4D1, symBinAddr: 0xA0089, symSize: 0x0 }
|
||||
- { offset: 0x441, size: 0x8, addend: 0x0, symName: _kbts_Ops_Indic3, symObjAddr: 0x9A4D9, symBinAddr: 0xA0091, symSize: 0x0 }
|
||||
- { offset: 0x463, size: 0x8, addend: 0x0, symName: _kbts_Ops_Use1, symObjAddr: 0x9A4EB, symBinAddr: 0xA00A3, symSize: 0x0 }
|
||||
- { offset: 0x485, size: 0x8, addend: 0x0, symName: _kbts_Ops_Use3, symObjAddr: 0x9A500, symBinAddr: 0xA00B8, symSize: 0x0 }
|
||||
- { offset: 0x49B, size: 0x8, addend: 0x0, symName: _kbts_Ops_Khmer1, symObjAddr: 0x9A51D, symBinAddr: 0xA00D5, symSize: 0x0 }
|
||||
- { offset: 0x4BD, size: 0x8, addend: 0x0, symName: _kbts_Ops_Khmer3, symObjAddr: 0x9A526, symBinAddr: 0xA00DE, symSize: 0x0 }
|
||||
- { offset: 0x4D3, size: 0x8, addend: 0x0, symName: _kbts_Ops_Myanmar1, symObjAddr: 0x9A53B, symBinAddr: 0xA00F3, symSize: 0x0 }
|
||||
- { offset: 0x4F5, size: 0x8, addend: 0x0, symName: _kbts_Ops_Myanmar2, symObjAddr: 0x9A53F, symBinAddr: 0xA00F7, symSize: 0x0 }
|
||||
- { offset: 0x50B, size: 0x8, addend: 0x0, symName: _kbts_Ops_Myanmar3, symObjAddr: 0x9A54B, symBinAddr: 0xA0103, symSize: 0x0 }
|
||||
- { offset: 0x52D, size: 0x8, addend: 0x0, symName: _kbts_ShaperFeatures, symObjAddr: 0x9A568, symBinAddr: 0xA0120, symSize: 0x0 }
|
||||
- { offset: 0x57E, size: 0x8, addend: 0x0, symName: _kbts_Ops_ArabicNoRclt, symObjAddr: 0x9A688, symBinAddr: 0xA0240, symSize: 0x0 }
|
||||
- { offset: 0x5A5, size: 0x8, addend: 0x0, symName: _kbts_UnicodeParentDeltas, symObjAddr: 0x7597C, symBinAddr: 0x75F1C, symSize: 0x0 }
|
||||
- { offset: 0x5CF, size: 0x8, addend: 0x0, symName: _kbts_IndicSyllabicTransition, symObjAddr: 0x773B8, symBinAddr: 0x77958, symSize: 0x0 }
|
||||
- { offset: 0x5F7, size: 0x8, addend: 0x0, symName: _kbts_UseTransition, symObjAddr: 0x776EC, symBinAddr: 0x77C8C, symSize: 0x0 }
|
||||
- { offset: 0x61F, size: 0x8, addend: 0x0, symName: _kbts_KhmerSyllabicTransition, symObjAddr: 0x77DD0, symBinAddr: 0x78370, symSize: 0x0 }
|
||||
- { offset: 0x647, size: 0x8, addend: 0x0, symName: _kbts_MyanmarSyllabicTransition, symObjAddr: 0x7803D, symBinAddr: 0x785DD, symSize: 0x0 }
|
||||
- { offset: 0x66F, size: 0x8, addend: 0x0, symName: _kbts_CmapFormatPrecedence, symObjAddr: 0x15670, symBinAddr: 0x15C10, symSize: 0x0 }
|
||||
- { offset: 0x696, size: 0x8, addend: 0x0, symName: _kbts_UnicodeBidirectionalClass_Data, symObjAddr: 0x784B8, symBinAddr: 0x78A58, symSize: 0x0 }
|
||||
- { offset: 0x6B9, size: 0x8, addend: 0x0, symName: _kbts_UnicodeBidirectionalClass_PageIndices, symObjAddr: 0x7F838, symBinAddr: 0x7FDD8, symSize: 0x0 }
|
||||
- { offset: 0x6CF, size: 0x8, addend: 0x0, symName: _kbts_UnicodeGraphemeBreakClass_Data, symObjAddr: 0x81A37, symBinAddr: 0x81FD7, symSize: 0x0 }
|
||||
- { offset: 0x6F2, size: 0x8, addend: 0x0, symName: _kbts_UnicodeGraphemeBreakClass_PageIndices, symObjAddr: 0x868B7, symBinAddr: 0x86E57, symSize: 0x0 }
|
||||
- { offset: 0x708, size: 0x8, addend: 0x0, symName: _kbts_UnicodeLineBreakClass_Data, symObjAddr: 0x88AB6, symBinAddr: 0x89056, symSize: 0x0 }
|
||||
- { offset: 0x72B, size: 0x8, addend: 0x0, symName: _kbts_UnicodeLineBreakClass_PageIndices, symObjAddr: 0x8F336, symBinAddr: 0x8F8D6, symSize: 0x0 }
|
||||
- { offset: 0x741, size: 0x8, addend: 0x0, symName: _kbts_UnicodeWordBreakClass_Data, symObjAddr: 0x93734, symBinAddr: 0x93CD4, symSize: 0x0 }
|
||||
- { offset: 0x764, size: 0x8, addend: 0x0, symName: _kbts_UnicodeWordBreakClass_PageIndices, symObjAddr: 0x91535, symBinAddr: 0x91AD5, symSize: 0x0 }
|
||||
- { offset: 0x77A, size: 0x8, addend: 0x0, symName: _kbts_GraphemeBreakTransition, symObjAddr: 0x9A334, symBinAddr: 0x9A8D4, symSize: 0x0 }
|
||||
- { offset: 0x29C7, size: 0x8, addend: 0x0, symName: _kbts_FeatureOverride, symObjAddr: 0x0, symBinAddr: 0x618, symSize: 0x14 }
|
||||
- { offset: 0x2A58, size: 0x8, addend: 0x0, symName: _kbts_GlyphConfig, symObjAddr: 0x14, symBinAddr: 0x62C, symSize: 0x60 }
|
||||
- { offset: 0x2B35, size: 0x8, addend: 0x0, symName: _kbts_InferScript, symObjAddr: 0x74, symBinAddr: 0x68C, symSize: 0x80 }
|
||||
- { offset: 0x2CD3, size: 0x8, addend: 0x0, symName: _kbts_CodepointToGlyph, symObjAddr: 0xF4, symBinAddr: 0x70C, symSize: 0x348 }
|
||||
- { offset: 0x309C, size: 0x8, addend: 0x0, symName: _kbts_GlyphClasses, symObjAddr: 0x43C, symBinAddr: 0xA54, symSize: 0x16C }
|
||||
- { offset: 0x32D3, size: 0x8, addend: 0x0, symName: _kbts_SizeOfShapeState, symObjAddr: 0x5A8, symBinAddr: 0xBC0, symSize: 0x20 }
|
||||
- { offset: 0x3310, size: 0x8, addend: 0x0, symName: _kbts_PlaceShapeState, symObjAddr: 0x5C8, symBinAddr: 0xBE0, symSize: 0x24 }
|
||||
- { offset: 0x33BB, size: 0x8, addend: 0x0, symName: _kbts_CreateShapeState, symObjAddr: 0x5EC, symBinAddr: 0xC04, symSize: 0x48 }
|
||||
- { offset: 0x34AB, size: 0x8, addend: 0x0, symName: _kbts_FreeShapeState, symObjAddr: 0x634, symBinAddr: 0xC4C, symSize: 0xC }
|
||||
- { offset: 0x34EA, size: 0x8, addend: 0x0, symName: _kbts_ResetShapeState, symObjAddr: 0x640, symBinAddr: 0xC58, symSize: 0x8 }
|
||||
- { offset: 0x3A52, size: 0x8, addend: 0x0, symName: _kbts_ShapeConfig, symObjAddr: 0x648, symBinAddr: 0xC60, symSize: 0x9CC }
|
||||
- { offset: 0x406D, size: 0x8, addend: 0x0, symName: _kbts_FeatureToId, symObjAddr: 0xD6BC, symBinAddr: 0xDCD4, symSize: 0x1DF0 }
|
||||
- { offset: 0x40A8, size: 0x8, addend: 0x0, symName: _kbts_DoSubstitution, symObjAddr: 0xF4AC, symBinAddr: 0xFAC4, symSize: 0xF50 }
|
||||
- { offset: 0x4E82, size: 0x8, addend: 0x0, symName: _kbts_ShapeConfig.cold.1, symObjAddr: 0x14490, symBinAddr: 0x14AB0, symSize: 0x24 }
|
||||
- { offset: 0x5B13, size: 0x8, addend: 0x0, symName: _kbts_Shape, symObjAddr: 0x1014, symBinAddr: 0x162C, symSize: 0x26CC }
|
||||
- { offset: 0x6E0C, size: 0x8, addend: 0x0, symName: _kbts_ExecuteOp, symObjAddr: 0x36E0, symBinAddr: 0x3CF8, symSize: 0x26BC }
|
||||
- { offset: 0x83FE, size: 0x8, addend: 0x0, symName: _kbts_Cursor, symObjAddr: 0x5D9C, symBinAddr: 0x63B4, symSize: 0xC }
|
||||
- { offset: 0x8408, size: 0x8, addend: 0x0, symName: _kbts_WouldSubstitute, symObjAddr: 0x13094, symBinAddr: 0x136AC, symSize: 0x154 }
|
||||
- { offset: 0x85FD, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapFeature, symObjAddr: 0x131E8, symBinAddr: 0x13800, symSize: 0x184 }
|
||||
- { offset: 0x8916, size: 0x8, addend: 0x0, symName: _kbts_BeginFeatures, symObjAddr: 0x11B1C, symBinAddr: 0x12134, symSize: 0x17C }
|
||||
- { offset: 0x8ACE, size: 0x8, addend: 0x0, symName: _kbts_DoSingleAdjustment, symObjAddr: 0x11C98, symBinAddr: 0x122B0, symSize: 0x1268 }
|
||||
- { offset: 0x9B92, size: 0x8, addend: 0x0, symName: _kbts_UnpackValueRecord, symObjAddr: 0x12F00, symBinAddr: 0x13518, symSize: 0xB8 }
|
||||
- { offset: 0x9BAF, size: 0x8, addend: 0x0, symName: _kbts_ExecuteOp.cold.3, symObjAddr: 0x14520, symBinAddr: 0x14AD4, symSize: 0x28 }
|
||||
- { offset: 0x9BD9, size: 0x8, addend: 0x0, symName: _kbts_Cursor, symObjAddr: 0x5D9C, symBinAddr: 0x63B4, symSize: 0xC }
|
||||
- { offset: 0x9C14, size: 0x8, addend: 0x0, symName: _kbts_PositionGlyph, symObjAddr: 0x5DA8, symBinAddr: 0x63C0, symSize: 0x80 }
|
||||
- { offset: 0x9D8E, size: 0x8, addend: 0x0, symName: _kbts_ReadFontHeader, symObjAddr: 0x5E28, symBinAddr: 0x6440, symSize: 0x7A0 }
|
||||
- { offset: 0xAD3F, size: 0x8, addend: 0x0, symName: _kbts_ReadFontData, symObjAddr: 0x65C8, symBinAddr: 0x6BE0, symSize: 0x17EC }
|
||||
- { offset: 0xC8A7, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapClassDefinition, symObjAddr: 0x7DB4, symBinAddr: 0x83CC, symSize: 0x17C }
|
||||
- { offset: 0xC8B1, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapClassDefinition, symObjAddr: 0x7DB4, symBinAddr: 0x83CC, symSize: 0x17C }
|
||||
- { offset: 0xC8E7, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapClassDefinition, symObjAddr: 0x7DB4, symBinAddr: 0x83CC, symSize: 0x17C }
|
||||
- { offset: 0xCA67, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapCoverage, symObjAddr: 0x7F30, symBinAddr: 0x8548, symSize: 0x154 }
|
||||
- { offset: 0xCA9D, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapCoverage, symObjAddr: 0x7F30, symBinAddr: 0x8548, symSize: 0x154 }
|
||||
- { offset: 0xCBAB, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapGsubGposCommon, symObjAddr: 0x8084, symBinAddr: 0x869C, symSize: 0xBBC }
|
||||
- { offset: 0xD6A9, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapLookup, symObjAddr: 0x8C40, symBinAddr: 0x9258, symSize: 0x13C }
|
||||
- { offset: 0xD6F5, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapLookup, symObjAddr: 0x8C40, symBinAddr: 0x9258, symSize: 0x13C }
|
||||
- { offset: 0xD81F, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapSequenceContextSubtable, symObjAddr: 0x1336C, symBinAddr: 0x13984, symSize: 0x64C }
|
||||
- { offset: 0xDFAB, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapChainedSequenceContextSubtable, symObjAddr: 0x139B8, symBinAddr: 0x13FD0, symSize: 0x240 }
|
||||
- { offset: 0xE384, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapGposLookupSubtable, symObjAddr: 0x8D7C, symBinAddr: 0x9394, symSize: 0xAA8 }
|
||||
- { offset: 0xEF5E, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapFeature, symObjAddr: 0x131E8, symBinAddr: 0x13800, symSize: 0x184 }
|
||||
- { offset: 0xEF94, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapFeature, symObjAddr: 0x131E8, symBinAddr: 0x13800, symSize: 0x184 }
|
||||
- { offset: 0xF290, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapValueRecord, symObjAddr: 0x13E60, symBinAddr: 0x14478, symSize: 0x174 }
|
||||
- { offset: 0xF3D3, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapMarkArray, symObjAddr: 0x140F4, symBinAddr: 0x1470C, symSize: 0x168 }
|
||||
- { offset: 0xF546, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapAnchor, symObjAddr: 0x13FD4, symBinAddr: 0x145EC, symSize: 0x120 }
|
||||
- { offset: 0xF57E, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapAnchor, symObjAddr: 0x13FD4, symBinAddr: 0x145EC, symSize: 0x120 }
|
||||
- { offset: 0xF753, size: 0x8, addend: 0x0, symName: _kbts_PostReadFontInitialize, symObjAddr: 0x9824, symBinAddr: 0x9E3C, symSize: 0x13F8 }
|
||||
- { offset: 0x10A9B, size: 0x8, addend: 0x0, symName: _kbts_GlyphPassesLookupFilter, symObjAddr: 0xAC2C, symBinAddr: 0xB244, symSize: 0x10C }
|
||||
- { offset: 0x10B9D, size: 0x8, addend: 0x0, symName: _kbts_FontIsValid, symObjAddr: 0xAC1C, symBinAddr: 0xB234, symSize: 0x10 }
|
||||
- { offset: 0x10BC3, size: 0x8, addend: 0x0, symName: _kbts_GlyphClassFromTable, symObjAddr: 0xAD38, symBinAddr: 0xB350, symSize: 0x94 }
|
||||
- { offset: 0x10C4F, size: 0x8, addend: 0x0, symName: _kbts_FontFromFile, symObjAddr: 0xADCC, symBinAddr: 0xB3E4, symSize: 0x10C }
|
||||
- { offset: 0x110A5, size: 0x8, addend: 0x0, symName: _kbts_FreeFont, symObjAddr: 0xAED8, symBinAddr: 0xB4F0, symSize: 0x3C }
|
||||
- { offset: 0x110E6, size: 0x8, addend: 0x0, symName: _kbts_BreakStateIsValid, symObjAddr: 0xAF14, symBinAddr: 0xB52C, symSize: 0x10 }
|
||||
- { offset: 0x1110C, size: 0x8, addend: 0x0, symName: _kbts_BreakFlush, symObjAddr: 0xAF24, symBinAddr: 0xB53C, symSize: 0x10 }
|
||||
- { offset: 0x1114B, size: 0x8, addend: 0x0, symName: _kbts_BreakAddCodepoint_, symObjAddr: 0xAF34, symBinAddr: 0xB54C, symSize: 0x2564 }
|
||||
- { offset: 0x112F1, size: 0x8, addend: 0x0, symName: _kbts_BreakAddCodepoint_, symObjAddr: 0xAF34, symBinAddr: 0xB54C, symSize: 0x2564 }
|
||||
- { offset: 0x11BE1, size: 0x8, addend: 0x0, symName: _kbts_DoLineBreak, symObjAddr: 0x1435C, symBinAddr: 0x14974, symSize: 0x134 }
|
||||
- { offset: 0x11D32, size: 0x8, addend: 0x0, symName: _kbts_BreakAddCodepoint, symObjAddr: 0xD498, symBinAddr: 0xDAB0, symSize: 0x48 }
|
||||
- { offset: 0x11DED, size: 0x8, addend: 0x0, symName: _kbts_Break, symObjAddr: 0xD4E0, symBinAddr: 0xDAF8, symSize: 0x68 }
|
||||
- { offset: 0x11E5C, size: 0x8, addend: 0x0, symName: _kbts_BeginBreak, symObjAddr: 0xD548, symBinAddr: 0xDB60, symSize: 0x44 }
|
||||
- { offset: 0x11EA3, size: 0x8, addend: 0x0, symName: _kbts_DecodeUtf8, symObjAddr: 0xD58C, symBinAddr: 0xDBA4, symSize: 0x108 }
|
||||
- { offset: 0x11F58, size: 0x8, addend: 0x0, symName: _kbts_ShaperIsComplex, symObjAddr: 0xD694, symBinAddr: 0xDCAC, symSize: 0xC }
|
||||
- { offset: 0x11FA4, size: 0x8, addend: 0x0, symName: _kbts_ScriptIsComplex, symObjAddr: 0xD6A0, symBinAddr: 0xDCB8, symSize: 0x1C }
|
||||
- { offset: 0x120F5, size: 0x8, addend: 0x0, symName: _kbts_GlyphsIncludedInLookupSubtable, symObjAddr: 0x103FC, symBinAddr: 0x10A14, symSize: 0x320 }
|
||||
- { offset: 0x123BA, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup, symObjAddr: 0x1071C, symBinAddr: 0x10D34, symSize: 0x1218 }
|
||||
- { offset: 0x134D3, size: 0x8, addend: 0x0, symName: _kbts_MatchCoverageSequence, symObjAddr: 0x11934, symBinAddr: 0x11F4C, symSize: 0x1E8 }
|
||||
- { offset: 0x13727, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.3, symObjAddr: 0x14694, symBinAddr: 0x14B4C, symSize: 0x28 }
|
||||
- { offset: 0x1373E, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.2, symObjAddr: 0x1466C, symBinAddr: 0x14B24, symSize: 0x28 }
|
||||
- { offset: 0x13755, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.1, symObjAddr: 0x14644, symBinAddr: 0x14AFC, symSize: 0x28 }
|
||||
- { offset: 0x1376C, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.5, symObjAddr: 0x146E4, symBinAddr: 0x14B9C, symSize: 0x28 }
|
||||
- { offset: 0x13783, size: 0x8, addend: 0x0, symName: _kbts_DoSequenceLookup.cold.4, symObjAddr: 0x146BC, symBinAddr: 0x14B74, symSize: 0x28 }
|
||||
- { offset: 0x13A8C, size: 0x8, addend: 0x0, symName: _kbts_AttachGlyph, symObjAddr: 0x12FB8, symBinAddr: 0x135D0, symSize: 0xDC }
|
||||
- { offset: 0x13B67, size: 0x8, addend: 0x0, symName: _kbts_UnpackValueRecord, symObjAddr: 0x12F00, symBinAddr: 0x13518, symSize: 0xB8 }
|
||||
- { offset: 0x13C1D, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapChainedSequenceRuleSet, symObjAddr: 0x13BF8, symBinAddr: 0x14210, symSize: 0x268 }
|
||||
- { offset: 0x13EAC, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapDevice, symObjAddr: 0x1425C, symBinAddr: 0x14874, symSize: 0x100 }
|
||||
- { offset: 0x13EE2, size: 0x8, addend: 0x0, symName: _kbts_ByteSwapDevice, symObjAddr: 0x1425C, symBinAddr: 0x14874, symSize: 0x100 }
|
||||
- { offset: 0x13FA7, size: 0x8, addend: 0x0, symName: _OUTLINED_FUNCTION_0, symObjAddr: 0x14754, symBinAddr: 0x14AA8, symSize: 0x8 }
|
||||
...
|
||||
5
modules/kb_text_shape/module.jai
Normal file
5
modules/kb_text_shape/module.jai
Normal file
@ -0,0 +1,5 @@
|
||||
#if OS == .WINDOWS {
|
||||
#load "windows.jai";
|
||||
} else #if OS == .MACOS {
|
||||
#load "macos.jai";
|
||||
}
|
||||
BIN
modules/kb_text_shape/windows/kb_text_shape.dll
Normal file
BIN
modules/kb_text_shape/windows/kb_text_shape.dll
Normal file
Binary file not shown.
BIN
modules/kb_text_shape/windows/kb_text_shape.lib
Normal file
BIN
modules/kb_text_shape/windows/kb_text_shape.lib
Normal file
Binary file not shown.
27
src/main.jai
27
src/main.jai
@ -1,19 +1,42 @@
|
||||
#import "Basic";
|
||||
#import "GL";
|
||||
#import "freetype-2.12.1";
|
||||
#import "Hash_Table";
|
||||
#import "Math";
|
||||
#import "File";
|
||||
#import "String";
|
||||
|
||||
#import "SDL3";
|
||||
#import "k";
|
||||
#import "kb_text_shape";
|
||||
|
||||
#load "text.jai";
|
||||
#load "ui.jai";
|
||||
#load "stb_textedit.jai";
|
||||
#load "math/colourspace.jai";
|
||||
#load "math/math.jai";
|
||||
#load "platform/input.jai";
|
||||
#load "platform/opengl.jai";
|
||||
#load "platform/shader.jai";
|
||||
#load "platform/texture.jai";
|
||||
|
||||
window_width :: 1280;
|
||||
window_height :: 720;
|
||||
|
||||
window : *SDL_Window;
|
||||
running : bool = true;
|
||||
|
||||
frame : u64;
|
||||
|
||||
main :: () {
|
||||
log("Hello, Sailor!");
|
||||
|
||||
SDL_Init(SDL_INIT_VIDEO);
|
||||
|
||||
window = SDL_CreateWindow("MExplorer", 100, 100, 0);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
|
||||
|
||||
window = SDL_CreateWindow("MExplorer", 100, 100, SDL_WINDOW_OPENGL);
|
||||
|
||||
while (running) {
|
||||
event : SDL_Event;
|
||||
|
||||
39
src/math/colourspace.jai
Normal file
39
src/math/colourspace.jai
Normal file
@ -0,0 +1,39 @@
|
||||
float_to_srgb :: (l: float) -> float {
|
||||
if (l <= 0) {
|
||||
return 0.0;
|
||||
} else if (l < 0.0031308) {
|
||||
return 12.92 * l;
|
||||
} else if (l < 1) {
|
||||
return 1.055 * pow(l, 0.41666) - 0.055;
|
||||
} else {
|
||||
return 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
linear_to_srgb :: (linear: Vector3) -> Vector3 {
|
||||
return .{float_to_srgb(linear.x), float_to_srgb(linear.y), float_to_srgb(linear.z)};
|
||||
}
|
||||
|
||||
linear_to_srgb :: (linear: Vector4) -> Vector4 {
|
||||
return .{float_to_srgb(linear.x), float_to_srgb(linear.y), float_to_srgb(linear.z), linear.w};
|
||||
}
|
||||
|
||||
srgb_to_linear :: (s: float) -> float {
|
||||
if (s <= 0.04045) {
|
||||
return s / 12.92;
|
||||
} else {
|
||||
return pow((s + 0.055) / 1.055, 2.4);
|
||||
}
|
||||
}
|
||||
|
||||
srgb_to_linear :: (srgb: Vector3) -> Vector3 {
|
||||
return .{srgb_to_linear(srgb.x), srgb_to_linear(srgb.y), srgb_to_linear(srgb.z)};
|
||||
}
|
||||
|
||||
srgb_to_linear :: (srgb: Vector4) -> Vector4 {
|
||||
return .{srgb_to_linear(srgb.x), srgb_to_linear(srgb.y), srgb_to_linear(srgb.z), srgb.w};
|
||||
}
|
||||
|
||||
srgb_to_linear :: (srgb: [4]float) -> [4]float {
|
||||
return .[srgb_to_linear(srgb[0]), srgb_to_linear(srgb[1]), srgb_to_linear(srgb[2]), srgb[3]];
|
||||
}
|
||||
101
src/math/math.jai
Normal file
101
src/math/math.jai
Normal file
@ -0,0 +1,101 @@
|
||||
v2 :: (x: float) -> Vector2 {
|
||||
return .{x, x};
|
||||
}
|
||||
|
||||
v2 :: (x: s64) -> Vector2 {
|
||||
return .{xx x, xx x};
|
||||
}
|
||||
|
||||
v3 :: (x: float, y: float, z: float) -> Vector3 {
|
||||
return .{x, y, z};
|
||||
}
|
||||
|
||||
v3 :: (x: float) -> Vector3 {
|
||||
return .{x, x, x};
|
||||
}
|
||||
|
||||
v3 :: (v: Vector2, a: float) -> Vector3 {
|
||||
return .{v.x, v.y, a};
|
||||
}
|
||||
|
||||
v4 :: (x: float, y: float, z: float, w: float) -> Vector4 {
|
||||
return .{x, y, z, w};
|
||||
}
|
||||
|
||||
v4 :: (v: Vector2) -> Vector4 {
|
||||
return .{v.x, v.y, 0.0, 0.0};
|
||||
}
|
||||
|
||||
v4 :: (v: Vector3, f: float) -> Vector4 {
|
||||
return .{v.x, v.y, v.z, f};
|
||||
}
|
||||
|
||||
v4 :: (x: float) -> Vector4 {
|
||||
return .{x, x, x, x};
|
||||
}
|
||||
|
||||
orthographic_gl :: (left: float, right: float, bottom: float, top: float, near: float, far: float) -> Matrix4 {
|
||||
m : Matrix4;
|
||||
|
||||
m._11 = 2.0 / (right - left);
|
||||
m._14 = -(right + left) / (right - left);
|
||||
|
||||
m._22 = 2.0 / (top - bottom);
|
||||
m._24 = -(top + bottom) / (top - bottom);
|
||||
|
||||
m._33 = -2.0 / (far - near);
|
||||
m._34 = -(far + near) / (far - near);
|
||||
|
||||
m._44 = 1.0;
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
vec2i :: struct {
|
||||
x : s32;
|
||||
y : s32;
|
||||
}
|
||||
|
||||
operator == :: (a: vec2i, b: vec2i) -> bool {
|
||||
return a.x == b.x && a.y == b.y;
|
||||
}
|
||||
|
||||
operator + :: (a: vec2i, b: vec2i) -> vec2i {
|
||||
return .{a.x + b.x, a.y + b.y};
|
||||
}
|
||||
|
||||
operator - :: (a: vec2i, b: vec2i) -> vec2i {
|
||||
return .{a.x - b.x, a.y - b.y};
|
||||
}
|
||||
|
||||
box :: struct {
|
||||
bottom_left : vec2i;
|
||||
top_right : vec2i;
|
||||
}
|
||||
|
||||
whbox :: struct {
|
||||
bottom_left : vec2i;
|
||||
size : vec2i;
|
||||
}
|
||||
|
||||
box_to_whbox :: (b: box) -> whbox {
|
||||
return whbox.{b.bottom_left, .{b.top_right.x - b.bottom_left.x, b.top_right.y - b.bottom_left.y}};
|
||||
}
|
||||
|
||||
whbox_to_box :: (b: whbox) -> box {
|
||||
return box.{b.bottom_left, .{b.bottom_left.x + b.size.x, b.bottom_left.y + b.size.y}};
|
||||
}
|
||||
|
||||
operator == :: (a: box, b: box) -> bool {
|
||||
return (a.bottom_left == b.bottom_left) && (a.top_right == b.top_right);
|
||||
}
|
||||
|
||||
intersect :: (a: box, b: box) -> box {
|
||||
intersection := box.{.{max(a.bottom_left.x, b.bottom_left.x), max(a.bottom_left.y, b.bottom_left.y)},
|
||||
.{min(a.top_right.x, b.top_right.x), min(a.top_right.y, b.top_right.y)}};
|
||||
if intersection.bottom_left.x < intersection.top_right.x && intersection.bottom_left.y < intersection.top_right.y {
|
||||
return intersection;
|
||||
} else {
|
||||
return .{};
|
||||
}
|
||||
}
|
||||
19
src/platform/input.jai
Normal file
19
src/platform/input.jai
Normal file
@ -0,0 +1,19 @@
|
||||
InputTransition :: struct {
|
||||
left_down : bool;
|
||||
left_up : bool;
|
||||
|
||||
right_down : bool;
|
||||
right_up : bool;
|
||||
|
||||
mouse_wheel : s64;
|
||||
motion_delta : Vector2;
|
||||
}
|
||||
|
||||
InputState :: struct {
|
||||
left_mouse : bool;
|
||||
right_mouse : bool;
|
||||
|
||||
last_char : u8;
|
||||
}
|
||||
|
||||
input_transitions : [..]InputTransition;
|
||||
142
src/platform/opengl.jai
Normal file
142
src/platform/opengl.jai
Normal file
@ -0,0 +1,142 @@
|
||||
// OpenGLState :: struct {
|
||||
// last_active_texture : GLenum;
|
||||
// last_program : GLuint;
|
||||
// last_texture : GLuint;
|
||||
// last_array_buffer : GLuint;
|
||||
|
||||
// #if !#exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) {
|
||||
// // This is part of VAO on OpenGL 3.0+ and OpenGL ES 3.0+.
|
||||
// last_element_array_buffer : GLint;
|
||||
// }
|
||||
// #if #exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) {
|
||||
// last_vertex_array_object : GLuint;
|
||||
// }
|
||||
|
||||
// #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE) {
|
||||
// last_polygon_mode : [2] GLint;
|
||||
// }
|
||||
|
||||
// last_viewport : [4] GLint;
|
||||
// last_scissor_box : [4]GLint;
|
||||
// last_blend_src_rgb : GLenum;
|
||||
// last_blend_dst_rgb : GLenum;
|
||||
// last_blend_src_alpha : GLenum;
|
||||
// last_blend_dst_alpha : GLenum;
|
||||
// last_blend_equation_rgb : GLenum;
|
||||
// last_blend_equation_alpha : GLenum;
|
||||
|
||||
// last_enable_blend : GLboolean;
|
||||
// last_enable_cull_face : GLboolean;
|
||||
// last_enable_depth_test : GLboolean;
|
||||
// last_enable_stencil_test : GLboolean;
|
||||
// last_enable_scissor_test : GLboolean;
|
||||
// }
|
||||
|
||||
// save_opengl_state :: (using state: *OpenGLState) {
|
||||
|
||||
// glGetIntegerv(GL_ACTIVE_TEXTURE, cast(*GLint) *last_active_texture);
|
||||
// glActiveTexture(GL_TEXTURE0);
|
||||
// glGetIntegerv(GL_CURRENT_PROGRAM, cast(*GLint) *last_program);
|
||||
|
||||
// glGetIntegerv(GL_TEXTURE_BINDING_2D, cast(*GLint) *last_texture);
|
||||
|
||||
// // #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER) {
|
||||
// // last_sampler : GLuint;
|
||||
// // if bd.GlVersion >= 330 || bd.GlProfileIsES3 {
|
||||
// // glGetIntegerv(GL_SAMPLER_BINDING, cast(*GLint) *last_sampler);
|
||||
// // } else {
|
||||
// // last_sampler = 0;
|
||||
// // }
|
||||
// // }
|
||||
|
||||
|
||||
// glGetIntegerv(GL_ARRAY_BUFFER_BINDING, cast(*GLint) *last_array_buffer);
|
||||
|
||||
// #if !#exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) {
|
||||
// // This is part of VAO on OpenGL 3.0+ and OpenGL ES 3.0+.
|
||||
// glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, *last_element_array_buffer);
|
||||
|
||||
// GetState(*last_vtx_attrib_state_pos, xx bd.AttribLocationVtxPos);
|
||||
// GetState(*last_vtx_attrib_state_uv, xx bd.AttribLocationVtxUV);
|
||||
// GetState(*last_vtx_attrib_state_colour, xx bd.AttribLocationVtxColor);
|
||||
// }
|
||||
// #if #exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) {
|
||||
// glGetIntegerv(GL_VERTEX_ARRAY_BINDING, cast(*GLint) *last_vertex_array_object);
|
||||
// }
|
||||
|
||||
// #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE) {
|
||||
// if (bd.HasPolygonMode) {
|
||||
// glGetIntegerv(GL_POLYGON_MODE, last_polygon_mode.data);
|
||||
// }
|
||||
// }
|
||||
|
||||
// glGetIntegerv(GL_VIEWPORT, last_viewport.data);
|
||||
// glGetIntegerv(GL_SCISSOR_BOX, last_scissor_box.data);
|
||||
// glGetIntegerv(GL_BLEND_SRC_RGB, cast(*GLint) *last_blend_src_rgb);
|
||||
// glGetIntegerv(GL_BLEND_DST_RGB, cast(*GLint) *last_blend_dst_rgb);
|
||||
// glGetIntegerv(GL_BLEND_SRC_ALPHA, cast(*GLint) *last_blend_src_alpha);
|
||||
// glGetIntegerv(GL_BLEND_DST_ALPHA, cast(*GLint) *last_blend_dst_alpha);
|
||||
// glGetIntegerv(GL_BLEND_EQUATION_RGB, cast(*GLint) *last_blend_equation_rgb);
|
||||
// glGetIntegerv(GL_BLEND_EQUATION_ALPHA, cast(*GLint) *last_blend_equation_alpha);
|
||||
|
||||
// last_enable_blend = glIsEnabled(GL_BLEND);
|
||||
// last_enable_cull_face = glIsEnabled(GL_CULL_FACE);
|
||||
// last_enable_depth_test = glIsEnabled(GL_DEPTH_TEST);
|
||||
// last_enable_stencil_test = glIsEnabled(GL_STENCIL_TEST);
|
||||
// last_enable_scissor_test = glIsEnabled(GL_SCISSOR_TEST);
|
||||
// // #if #exists (IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART) {
|
||||
// // last_enable_primitive_restart : GLboolean = ifx (bd.GlVersion >= 310) then glIsEnabled(GL_PRIMITIVE_RESTART) else GL_FALSE;
|
||||
// // }
|
||||
// }
|
||||
|
||||
// restore_opengl_state :: (using state: *OpenGLState) {
|
||||
// // This "glIsProgram()" check is required because if the program is "pending deletion" at the time of binding backup,
|
||||
// // it will have been deleted by now and will cause an OpenGL error. See #6220.
|
||||
// if last_program == 0 || glIsProgram(last_program) glUseProgram(last_program);
|
||||
// glBindTexture(GL_TEXTURE_2D, last_texture);
|
||||
// // #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER) {
|
||||
// // if bd.GlVersion >= 330 || bd.GlProfileIsES3
|
||||
// // glBindSampler(0, last_sampler);
|
||||
// // }
|
||||
// glActiveTexture(last_active_texture);
|
||||
// #if #exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) {
|
||||
// glBindVertexArray(last_vertex_array_object);
|
||||
// }
|
||||
// glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer);
|
||||
// #if !#exists(IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY) {
|
||||
// glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, xx last_element_array_buffer);
|
||||
// SetState(*last_vtx_attrib_state_pos, xx bd.AttribLocationVtxPos);
|
||||
// SetState(*last_vtx_attrib_state_uv, xx bd.AttribLocationVtxUV);
|
||||
// SetState(*last_vtx_attrib_state_colour, xx bd.AttribLocationVtxColor);
|
||||
// }
|
||||
// glBlendEquationSeparate(last_blend_equation_rgb, last_blend_equation_alpha);
|
||||
// glBlendFuncSeparate(last_blend_src_rgb, last_blend_dst_rgb, last_blend_src_alpha, last_blend_dst_alpha);
|
||||
// if last_enable_blend glEnable(GL_BLEND); else glDisable(GL_BLEND);
|
||||
// if last_enable_cull_face glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE);
|
||||
// if last_enable_depth_test glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST);
|
||||
// if last_enable_stencil_test glEnable(GL_STENCIL_TEST); else glDisable(GL_STENCIL_TEST);
|
||||
// if last_enable_scissor_test glEnable(GL_SCISSOR_TEST); else glDisable(GL_SCISSOR_TEST);
|
||||
// // #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART) {
|
||||
// // if bd.GlVersion >= 310 {
|
||||
// // if last_enable_primitive_restart
|
||||
// // glEnable(GL_PRIMITIVE_RESTART);
|
||||
// // else
|
||||
// // glDisable(GL_PRIMITIVE_RESTART);
|
||||
// // }
|
||||
// // }
|
||||
|
||||
// #if #exists(IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE) {
|
||||
// // Desktop OpenGL 3.0 and OpenGL 3.1 had separate polygon draw modes for front-facing and back-facing faces of polygons
|
||||
// if (bd.HasPolygonMode) {
|
||||
// if (bd.GlVersion <= 310 || bd.GlProfileIsCompat) {
|
||||
// glPolygonMode(GL_FRONT, cast(GLenum) last_polygon_mode[0]);
|
||||
// glPolygonMode(GL_BACK, cast(GLenum) last_polygon_mode[1]);
|
||||
// } else {
|
||||
// glPolygonMode(GL_FRONT_AND_BACK, cast(GLenum) last_polygon_mode[0]);
|
||||
// }
|
||||
// }
|
||||
// } // IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE
|
||||
|
||||
// glViewport(last_viewport[0], last_viewport[1], cast(GLsizei) last_viewport[2], cast(GLsizei) last_viewport[3]);
|
||||
// glScissor(last_scissor_box[0], last_scissor_box[1], cast(GLsizei) last_scissor_box[2], cast(GLsizei) last_scissor_box[3]);
|
||||
// }
|
||||
488
src/platform/shader.jai
Normal file
488
src/platform/shader.jai
Normal file
@ -0,0 +1,488 @@
|
||||
_Shader :: struct {
|
||||
path : string;
|
||||
name : string;
|
||||
vertex_text : string;
|
||||
fragment_text : string;
|
||||
|
||||
compiled : bool;
|
||||
|
||||
id : GLuint;
|
||||
vsid : GLuint;
|
||||
fsid : GLuint;
|
||||
};
|
||||
|
||||
panel_shader : _Shader;
|
||||
sprite_shader : _Shader;
|
||||
line_shader : _Shader;
|
||||
text_shader : _Shader;
|
||||
|
||||
init_shaders :: () {
|
||||
init_shader(*panel_shader, panel_vertex_text, panel_frag_text);
|
||||
init_shader(*sprite_shader, sprite_vertex_text, sprite_frag_text);
|
||||
init_shader(*line_shader, line_vert_text, line_frag_text);
|
||||
init_shader(*text_shader, text_vert_text, text_frag_text);
|
||||
}
|
||||
|
||||
init_shader_file :: (using shader: *_Shader, _path: string, file_name_without_extensions: string) {
|
||||
path = _path;
|
||||
name = file_name_without_extensions;
|
||||
vertex_text = read_entire_file(tprint("%/%.vert", path, name));
|
||||
fragment_text = read_entire_file(tprint("%/%.frag", path, name));
|
||||
|
||||
vsid = glCreateShader(GL_VERTEX_SHADER);
|
||||
fsid = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
id = glCreateProgram();
|
||||
|
||||
compile_shader(shader);
|
||||
|
||||
compiled = true;
|
||||
}
|
||||
|
||||
init_shader :: (using shader: *_Shader, _vertex_text: string, _fragment_text: string) {
|
||||
vertex_text = _vertex_text;
|
||||
fragment_text = _fragment_text;
|
||||
|
||||
vsid = glCreateShader(GL_VERTEX_SHADER);
|
||||
fsid = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
id = glCreateProgram();
|
||||
|
||||
compile_shader(shader);
|
||||
|
||||
compiled = true;
|
||||
}
|
||||
|
||||
compile_shader :: (using shader: *_Shader) -> bool {
|
||||
success : s32;
|
||||
|
||||
glShaderSource(vsid, 1, *vertex_text.data, cast(*s32) *vertex_text.count);
|
||||
glCompileShader(vsid);
|
||||
|
||||
glGetShaderiv(vsid, GL_COMPILE_STATUS, *success);
|
||||
if !success {
|
||||
auto_release_temp();
|
||||
|
||||
length : s32;
|
||||
glGetShaderiv(vsid, GL_INFO_LOG_LENGTH, *length);
|
||||
|
||||
info : string = alloc_string(length,, temp);
|
||||
glGetShaderInfoLog(vsid, xx info.count, null, info.data);
|
||||
|
||||
logd("[Error] Vertex Shader compilation failed in %/% \n\n\n\t%\n\n\n", path, name, info);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
glShaderSource(fsid, 1, *fragment_text.data, cast(*s32) *fragment_text.count);
|
||||
glCompileShader(fsid);
|
||||
|
||||
glGetShaderiv(fsid, GL_COMPILE_STATUS, *success);
|
||||
if !success {
|
||||
auto_release_temp();
|
||||
|
||||
length : s32;
|
||||
glGetShaderiv(fsid, GL_INFO_LOG_LENGTH, *length);
|
||||
|
||||
info : string = alloc_string(length,, temp);
|
||||
glGetShaderInfoLog(fsid, xx info.count, null, info.data);
|
||||
|
||||
logd("[Error] Fragment Shader compilation failed in %/% \n\n\n\t%\n\n\n", path, name, info);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
glAttachShader(id, vsid);
|
||||
glAttachShader(id, fsid);
|
||||
|
||||
glLinkProgram(id);
|
||||
|
||||
glGetProgramiv(id, GL_LINK_STATUS, *success);
|
||||
if !success {
|
||||
auto_release_temp();
|
||||
|
||||
length : s32;
|
||||
glGetProgramiv(id, GL_INFO_LOG_LENGTH, *length);
|
||||
|
||||
info : string = alloc_string(length,, temp);
|
||||
glGetProgramInfoLog(id, xx info.count, null, info.data);
|
||||
|
||||
logd("[Error] Shader Program linking failed in shader %/% \n\t%\n\n\n\n", path, name, info);
|
||||
return false;
|
||||
}
|
||||
|
||||
glDetachShader(id, vsid);
|
||||
glDetachShader(id, fsid);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
destroy_shader :: (using shader: *_Shader) {
|
||||
glDeleteShader(vsid);
|
||||
glDeleteShader(fsid);
|
||||
|
||||
glDeleteProgram(shader.id);
|
||||
}
|
||||
|
||||
use :: (using shader: *_Shader) -> bool {
|
||||
if compiled {
|
||||
glUseProgram(id);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
panel_vertex_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
layout(location = 0) in vec2 in_pos;
|
||||
layout(location = 1) in vec2 in_st;
|
||||
layout(location = 2) in vec4 in_col;
|
||||
|
||||
out vec2 st;
|
||||
out vec4 col;
|
||||
|
||||
uniform mat4 uni_proj;
|
||||
uniform mat4 uni_view;
|
||||
uniform mat4 uni_model;
|
||||
|
||||
void main() {
|
||||
gl_Position = uni_proj * uni_view * uni_model * vec4(in_pos, 0.0, 1.0);
|
||||
st = vec2(in_st.x, 1.0 - in_st.y);
|
||||
col = in_col;
|
||||
}
|
||||
|
||||
DONE
|
||||
|
||||
panel_frag_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
precision mediump float;
|
||||
|
||||
in vec2 st;
|
||||
in vec4 col;
|
||||
|
||||
layout(location = 0) out vec4 out_colour;
|
||||
|
||||
uniform vec4 uniform_colour;
|
||||
|
||||
uniform sampler2D buttontexture;
|
||||
|
||||
uniform int texturewidth;
|
||||
uniform int textureheight;
|
||||
|
||||
uniform uint isoverlay;
|
||||
|
||||
uniform int ninepatchborder;
|
||||
uniform vec2 scale;
|
||||
|
||||
float float_to_srgb(float l) {
|
||||
if (l < 0.0031308) {
|
||||
return l * 12.92;
|
||||
} else {
|
||||
return 1.055 * pow(l, 0.41666) - 0.055;
|
||||
}
|
||||
}
|
||||
|
||||
vec4 linear_to_srgb(vec4 linear) {
|
||||
vec4 srgb;
|
||||
|
||||
if (linear.x < 0.0031308) {
|
||||
srgb.x = linear.x * 12.92;
|
||||
} else {
|
||||
srgb.x = 1.055 * pow(linear.x, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
if (linear.y < 0.0031308) {
|
||||
srgb.y = linear.y * 12.92;
|
||||
} else {
|
||||
srgb.y = 1.055 * pow(linear.y, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
if (linear.z < 0.0031308) {
|
||||
srgb.z = linear.z * 12.92;
|
||||
} else {
|
||||
srgb.z = 1.055 * pow(linear.z, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
srgb.w = linear.w;
|
||||
|
||||
return srgb;
|
||||
}
|
||||
|
||||
float float_to_linear(float s) {
|
||||
if (s <= 0.04045) {
|
||||
return s / 12.92;
|
||||
} else {
|
||||
return pow((s + 0.055) / 1.055, 2.4);
|
||||
}
|
||||
}
|
||||
|
||||
vec4 srgb_to_linear(vec4 srgb) {
|
||||
return vec4(float_to_linear(srgb.r), float_to_linear(srgb.g), float_to_linear(srgb.b), srgb.a);
|
||||
}
|
||||
|
||||
vec4 texture2DAA(sampler2D _texture, vec2 uv) {
|
||||
vec2 texsize = vec2(textureSize(_texture, 0));
|
||||
vec2 uv_texspace = uv * texsize;
|
||||
vec2 seam = floor(uv_texspace + 0.5);
|
||||
uv_texspace = (uv_texspace - seam) / fwidth(uv_texspace) + seam;
|
||||
uv_texspace = clamp(uv_texspace, seam - 0.5, seam + 0.5);
|
||||
return texture(_texture, uv_texspace / texsize);
|
||||
}
|
||||
|
||||
float remap(float t, float t1, float t2, float s1, float s2) {
|
||||
return (t - t1) / (t2 - t1) * (s2 - s1) + s1;
|
||||
}
|
||||
|
||||
vec2 map_st_to_ninepatch(vec2 st) {
|
||||
vec2 ret;
|
||||
|
||||
float t1_model = float(ninepatchborder) / scale.x;
|
||||
float t1_texture = float(ninepatchborder) / float(texturewidth);
|
||||
|
||||
float t2_model = 1.0 - t1_model;
|
||||
float t2_texture = 1.0 - t1_texture;
|
||||
|
||||
float s1_model = float(ninepatchborder) / scale.y;
|
||||
float s1_texture = float(ninepatchborder) / float(textureheight);
|
||||
|
||||
float s2_model = 1.0 - s1_model;
|
||||
float s2_texture = 1.0 - s1_texture;
|
||||
|
||||
|
||||
|
||||
|
||||
ret.x = remap(st.x, 0.0, t1_model, 0.0, t1_texture) * (step(0.0, st.x) - step(t1_model, st.x)) +
|
||||
remap(st.x, t1_model, t2_model, t1_texture, t2_texture) * (step(t1_model, st.x) - step(t2_model, st.x)) +
|
||||
remap(st.x, t2_model, 1.0, t2_texture, 1.0) * step(t2_model, st.x);
|
||||
|
||||
ret.y = remap(st.y, 0.0, s1_model, 0.0, s1_texture) * (step(0.0, st.y) - step(s1_model, st.y)) +
|
||||
remap(st.y, s1_model, s2_model, s1_texture, s2_texture) * (step(s1_model, st.y) - step(s2_model, st.y)) +
|
||||
remap(st.y, s2_model, 1.0, s2_texture, 1.0) * step(s2_model, st.y);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec4 panel_sample = texture2DAA(buttontexture, map_st_to_ninepatch(st));
|
||||
|
||||
out_colour = linear_to_srgb(mix(panel_sample, col, col.a));
|
||||
}
|
||||
|
||||
DONE
|
||||
|
||||
sprite_vertex_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
layout(location = 0) in vec2 in_pos;
|
||||
layout(location = 1) in vec2 in_st;
|
||||
layout(location = 2) in vec4 in_col;
|
||||
layout(location = 3) in float in_alpha;
|
||||
|
||||
out vec2 st;
|
||||
out float alpha;
|
||||
|
||||
uniform mat4 uni_proj;
|
||||
uniform mat4 uni_view;
|
||||
uniform mat4 uni_model;
|
||||
|
||||
void main() {
|
||||
gl_Position = uni_proj * uni_view * uni_model * vec4(in_pos, 0.0, 1.0);
|
||||
st = vec2(in_st.x, 1.0 - in_st.y);
|
||||
alpha = in_alpha;
|
||||
}
|
||||
|
||||
DONE
|
||||
|
||||
sprite_frag_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
precision mediump float;
|
||||
|
||||
in vec2 st;
|
||||
in float alpha;
|
||||
|
||||
layout(location = 0) out vec4 out_colour;
|
||||
|
||||
uniform sampler2D main_texture;
|
||||
uniform vec3 overlay;
|
||||
|
||||
//vec4 texture2DAA(sampler2D _texture, vec2 uv) {
|
||||
// vec2 texsize = vec2(textureSize(_texture, 0));
|
||||
// vec2 uv_texspace = uv * texsize;
|
||||
// vec2 seam = floor(uv_texspace + 0.5);
|
||||
// uv_texspace = (uv_texspace - seam) / fwidth(uv_texspace) + seam;
|
||||
// uv_texspace = clamp(uv_texspace, seam - 0.5, seam + 0.5);
|
||||
// return texture(_texture, uv_texspace / texsize);
|
||||
//}
|
||||
|
||||
float float_to_srgb(float l) {
|
||||
if (l < 0.0031308) {
|
||||
return l * 12.92;
|
||||
} else {
|
||||
return 1.055 * pow(l, 0.41666) - 0.055;
|
||||
}
|
||||
}
|
||||
|
||||
vec4 linear_to_srgb(vec4 linear) {
|
||||
vec4 srgb;
|
||||
|
||||
if (linear.x < 0.0031308) {
|
||||
srgb.x = linear.x * 12.92;
|
||||
} else {
|
||||
srgb.x = 1.055 * pow(linear.x, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
if (linear.y < 0.0031308) {
|
||||
srgb.y = linear.y * 12.92;
|
||||
} else {
|
||||
srgb.y = 1.055 * pow(linear.y, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
if (linear.z < 0.0031308) {
|
||||
srgb.z = linear.z * 12.92;
|
||||
} else {
|
||||
srgb.z = 1.055 * pow(linear.z, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
srgb.w = linear.w;
|
||||
|
||||
return srgb;
|
||||
}
|
||||
|
||||
float float_to_linear(float s) {
|
||||
if (s <= 0.04045) {
|
||||
return s / 12.92;
|
||||
} else {
|
||||
return pow((s + 0.055) / 1.055, 2.4);
|
||||
}
|
||||
}
|
||||
|
||||
vec4 srgb_to_linear(vec4 srgb) {
|
||||
return vec4(float_to_linear(srgb.r), float_to_linear(srgb.g), float_to_linear(srgb.b), srgb.a);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec4 main_sample = texture(main_texture, st);
|
||||
|
||||
//out_colour = vec4(mix(main_sample.rgb, overlay, 0.1), main_sample.a * max(0.2, alpha));
|
||||
out_colour = linear_to_srgb(vec4(main_sample.rgb, smoothstep(0.5, 0.51, 1.0 - distance(st, vec2(0.5)))));
|
||||
}
|
||||
|
||||
DONE
|
||||
|
||||
line_vert_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
layout (location = 0) in vec2 in_pos;
|
||||
|
||||
uniform mat4 uni_model;
|
||||
uniform mat4 uni_view;
|
||||
uniform mat4 uni_proj;
|
||||
|
||||
void main() {
|
||||
gl_Position = uni_proj * uni_view * uni_model * vec4(in_pos, 0.0, 1.0);
|
||||
}
|
||||
DONE
|
||||
|
||||
line_frag_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
precision mediump float;
|
||||
|
||||
out vec4 out_colour;
|
||||
|
||||
uniform vec4 uni_colour;
|
||||
|
||||
void main() {
|
||||
out_colour = uni_colour;
|
||||
}
|
||||
DONE
|
||||
|
||||
text_vert_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
precision highp float;
|
||||
|
||||
layout(location = 0) in vec2 in_pos;
|
||||
layout(location = 1) in vec2 in_st;
|
||||
layout(location = 2) in vec4 in_colour;
|
||||
|
||||
out vec2 st;
|
||||
out vec4 colour;
|
||||
|
||||
uniform mat4 uni_proj;
|
||||
uniform mat4 uni_view;
|
||||
|
||||
void main() {
|
||||
gl_Position = uni_proj * uni_view * vec4(in_pos, 0.0, 1.0);
|
||||
st = vec2(in_st.x, 1.0 - in_st.y);
|
||||
colour = in_colour;
|
||||
}
|
||||
DONE
|
||||
|
||||
text_frag_text :: #string DONE
|
||||
#version 320 es
|
||||
|
||||
precision highp float;
|
||||
|
||||
in vec2 st;
|
||||
in vec4 colour;
|
||||
|
||||
layout(location = 0) out vec4 out_colour;
|
||||
|
||||
uniform sampler2D sampler;
|
||||
|
||||
float float_to_srgb(float l) {
|
||||
if (l < 0.0031308) {
|
||||
return l * 12.92;
|
||||
} else {
|
||||
return 1.055 * pow(l, 0.41666) - 0.055;
|
||||
}
|
||||
}
|
||||
|
||||
vec4 linear_to_srgb(vec4 linear) {
|
||||
vec4 srgb;
|
||||
|
||||
if (linear.x < 0.0031308) {
|
||||
srgb.x = linear.x * 12.92;
|
||||
} else {
|
||||
srgb.x = 1.055 * pow(linear.x, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
if (linear.y < 0.0031308) {
|
||||
srgb.y = linear.y * 12.92;
|
||||
} else {
|
||||
srgb.y = 1.055 * pow(linear.y, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
if (linear.z < 0.0031308) {
|
||||
srgb.z = linear.z * 12.92;
|
||||
} else {
|
||||
srgb.z = 1.055 * pow(linear.z, 0.41666) - 0.055;
|
||||
}
|
||||
|
||||
srgb.w = linear.w;
|
||||
|
||||
return srgb;
|
||||
}
|
||||
|
||||
float float_to_linear(float s) {
|
||||
if (s <= 0.04045) {
|
||||
return s / 12.92;
|
||||
} else {
|
||||
return pow((s + 0.055) / 1.055, 2.4);
|
||||
}
|
||||
}
|
||||
|
||||
vec4 srgb_to_linear(vec4 srgb) {
|
||||
return vec4(float_to_linear(srgb.r), float_to_linear(srgb.g), float_to_linear(srgb.b), srgb.a);
|
||||
}
|
||||
|
||||
void main() {
|
||||
float sampled = texture(sampler, st).r;
|
||||
//colour = mix(data_bg, data_colour, float_to_srgb(sampled));
|
||||
out_colour = vec4(colour.xyz, (sampled));
|
||||
}
|
||||
DONE
|
||||
71
src/platform/texture.jai
Normal file
71
src/platform/texture.jai
Normal file
@ -0,0 +1,71 @@
|
||||
Texture :: struct {
|
||||
path : string;
|
||||
name : string;
|
||||
index : u32;
|
||||
|
||||
// NOTE: (vfs) stb_image wants s32 values for the width and height.
|
||||
width : s32;
|
||||
height : s32;
|
||||
channels : s32;
|
||||
|
||||
srgb : bool;
|
||||
uploaded : bool;
|
||||
|
||||
id : GLuint;
|
||||
internal_format : GLint;
|
||||
format : GLenum;
|
||||
}
|
||||
|
||||
make_texture :: (path: string, srgb := true) -> *Texture {
|
||||
texture := New(Texture);
|
||||
|
||||
init_texture(texture, path, srgb);
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
init_texture :: (texture: *Texture, path: string, srgb := true, bilinear := true) {
|
||||
fullpath, basename, extension, basename_with_extension := path_decomp(path);
|
||||
|
||||
file := read_entire_file(path);
|
||||
|
||||
width : s32;
|
||||
height : s32;
|
||||
channels : s32;
|
||||
data := stbi_load_from_memory(file.data, xx file.count, *width, *height, *channels, 4);
|
||||
channels = 4;
|
||||
|
||||
if !data {
|
||||
logd("[Error] Could not load the texture %, probably invalid file name.", basename);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
texture.path = path;
|
||||
texture.name = basename;
|
||||
texture.internal_format = cast(GLint) ifx channels == 3 then GL_SRGB8 else GL_SRGB8_ALPHA8;
|
||||
texture.format = cast(GLenum) ifx channels == 3 then GL_RGB else GL_RGBA;
|
||||
|
||||
glGenTextures(1, *texture.id);
|
||||
glBindTexture(GL_TEXTURE_2D, texture.id);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, texture.internal_format, xx width, xx height, 0, texture.format, GL_UNSIGNED_BYTE, data);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||
|
||||
if bilinear {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
} else {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
}
|
||||
|
||||
border_color := float.[0.0, 0.0, 0.0, 0.0];
|
||||
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, border_color.data);
|
||||
|
||||
texture.width = width;
|
||||
texture.height = height;
|
||||
texture.channels = channels;
|
||||
texture.srgb = srgb;
|
||||
}
|
||||
1641
src/stb_textedit.jai
Normal file
1641
src/stb_textedit.jai
Normal file
File diff suppressed because it is too large
Load Diff
@ -220,8 +220,8 @@ render_text :: (font: *Font, text: string, pos: Vector2, window_space: bool = tr
|
||||
return;
|
||||
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glDisable(GL_MULTISAMPLE);
|
||||
@ -322,7 +322,7 @@ render_text :: (font: *Font, text: string, pos: Vector2, window_space: bool = tr
|
||||
render_batch(.TRIANGLES, vertices, *text_shader, *font.texture, view, proj);
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
}
|
||||
|
||||
// string_size :: (font: *Font, Cursor: *kbts_cursor, text: string, MainDirection: kbts_direction, Direction: kbts_direction, Script: kbts_script) -> Vector2 {
|
||||
|
||||
78
src/ui.jai
78
src/ui.jai
@ -78,7 +78,7 @@ UIContext :: struct {
|
||||
sizing_y : UISizing;
|
||||
offaxis_layout : UIOffAxisLayout;
|
||||
|
||||
font : *Simp.Dynamic_Font;
|
||||
// font : *Simp.Dynamic_Font;
|
||||
cfont : *Font;
|
||||
|
||||
margin : s32 = 2;
|
||||
@ -147,7 +147,7 @@ Rect :: struct {
|
||||
|
||||
interacted : bool;
|
||||
|
||||
last_frame : s64;
|
||||
last_frame : u64;
|
||||
}
|
||||
|
||||
Label :: struct {
|
||||
@ -172,7 +172,7 @@ FontIcon :: struct {
|
||||
#as using rect : Rect;
|
||||
rect.type = .FONTICON;
|
||||
|
||||
font : *Simp.Dynamic_Font;
|
||||
font : *Font;
|
||||
name : string;
|
||||
colour : Vector4;
|
||||
}
|
||||
@ -186,7 +186,7 @@ Button :: struct {
|
||||
active_frame : *Texture;
|
||||
|
||||
icon : *Texture;
|
||||
font : *Simp.Dynamic_Font;
|
||||
font : *Font;
|
||||
font_colour : Vector4;
|
||||
text : string;
|
||||
}
|
||||
@ -270,7 +270,7 @@ ui_end_frame :: () {
|
||||
}
|
||||
|
||||
for ui_context.rects {
|
||||
if program.frame_number > it.last_frame {
|
||||
if frame > it.last_frame {
|
||||
remove it;
|
||||
}
|
||||
|
||||
@ -324,7 +324,7 @@ ui_begin :: (s: string) {
|
||||
root.colours = ui_context.colours;
|
||||
}
|
||||
|
||||
root.last_frame = program.frame_number;
|
||||
root.last_frame = frame;
|
||||
root.cursor = .{};
|
||||
|
||||
if root.anchor == .BOTTOM_LEFT {
|
||||
@ -335,7 +335,7 @@ ui_begin :: (s: string) {
|
||||
root.pos = .{0.0, 0.0};
|
||||
}
|
||||
} else if root.anchor == .TOP_LEFT {
|
||||
root.pos = .{0.0, xx program.window_height};
|
||||
root.pos = .{0.0, xx window_height};
|
||||
}
|
||||
|
||||
root.first = null;
|
||||
@ -358,8 +358,8 @@ ui_end :: () {
|
||||
|
||||
ui_draw_root :: (using rect: *Rect) {
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
if anchor == .TOP_LEFT && layout == .TTB {
|
||||
p := Vector2.{rect.pos.x + margin + padding, rect.pos.y + margin + padding - rect.size.y};
|
||||
@ -369,7 +369,7 @@ ui_draw_root :: (using rect: *Rect) {
|
||||
}
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
}
|
||||
|
||||
global_max_width : float = 100.0;
|
||||
@ -427,8 +427,8 @@ ui_draw_label :: (using label: *Label) {
|
||||
// }
|
||||
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
if ui_context.show_debug {
|
||||
render_rectangle(pos, size);
|
||||
@ -439,7 +439,7 @@ ui_draw_label :: (using label: *Label) {
|
||||
render_panel(null, pos + v2(margin), size - 2 * v2(margin), colours.background, colours.background, border_size);
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
|
||||
//midline : Vector2 = pos + Vector2.{cast(float, margin + padding), xx (size.y / 2.0)};
|
||||
|
||||
@ -490,8 +490,8 @@ ui_icon :: (s: string, texture: *Texture, size: Vector2) {
|
||||
|
||||
ui_draw_icon :: (using icon: *Icon) {
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
if ui_context.show_debug {
|
||||
render_rectangle(pos, size);
|
||||
@ -502,10 +502,10 @@ ui_draw_icon :: (using icon: *Icon) {
|
||||
render_texture(texture, pos + v2(margin) + v2(padding), min_size);
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
}
|
||||
|
||||
ui_font_icon :: (font: *Simp.Dynamic_Font, s: string, size: Vector2, colour: Vector4 = .{1, 1, 1, 1}) {
|
||||
ui_font_icon :: (font: *Font, s: string, size: Vector2, colour: Vector4 = .{1, 1, 1, 1}) {
|
||||
text, key := ui_decompose_and_generate_id(peek(ui_context.stack), s);
|
||||
success, ptr := table_find_new(*ui_context.rects, key);
|
||||
icon : *FontIcon = xx ptr;
|
||||
@ -540,13 +540,13 @@ ui_font_icon :: (font: *Simp.Dynamic_Font, s: string, size: Vector2, colour: Vec
|
||||
ui_draw_font_icon :: (using font_icon: *FontIcon) {
|
||||
midline : Vector2 = pos + Vector2.{cast(float, margin + border_size + padding), xx (size.y / 2.0)};
|
||||
|
||||
label_size := Vector2.{xx Simp.prepare_icon(font, name), xx font.character_height};
|
||||
// label_size := Vector2.{xx Simp.prepare_icon(font, name), xx font.character_height};
|
||||
|
||||
Simp.draw_prepared_text(font, xx midline.x, xx (midline.y - label_size.y / 2.0), colour);
|
||||
// Simp.draw_prepared_text(font, xx midline.x, xx (midline.y - label_size.y / 2.0), colour);
|
||||
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
if ui_context.show_debug {
|
||||
render_rectangle(pos, size);
|
||||
@ -555,7 +555,7 @@ ui_draw_font_icon :: (using font_icon: *FontIcon) {
|
||||
}
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
}
|
||||
|
||||
ui_button :: (s: string = "", icon_texture: *Texture = null, font_colour := Vector4.{1, 1, 1, 1}, draw_frame := true) -> bool {
|
||||
@ -648,8 +648,8 @@ ui_button :: (s: string = "", icon_texture: *Texture = null, font_colour := Vect
|
||||
|
||||
ui_draw_button :: (using button: *Button) {
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
if active {
|
||||
render_panel(active_frame, pos + v2(margin), size - 2 * v2(margin), colours.active, colours.active, border_size);
|
||||
@ -675,11 +675,11 @@ ui_draw_button :: (using button: *Button) {
|
||||
}
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
|
||||
label_size := Vector2.{xx Simp.prepare_text(button.font, button.text), xx button.font.character_height};
|
||||
// label_size := Vector2.{xx Simp.prepare_text(button.font, button.text), xx button.font.character_height};
|
||||
|
||||
Simp.draw_prepared_text(button.font, xx midline.x, xx (midline.y - label_size.y / 2.0), font_colour);
|
||||
// Simp.draw_prepared_text(button.font, xx midline.x, xx (midline.y - label_size.y / 2.0), font_colour);
|
||||
}
|
||||
|
||||
ui_scrollbar :: (s: string = "", icon_texture: *Texture = null, font_colour := Vector4.{1, 1, 1, 1}, draw_frame := true) -> bool {
|
||||
@ -771,8 +771,8 @@ ui_scrollbar :: (s: string = "", icon_texture: *Texture = null, font_colour := V
|
||||
|
||||
ui_draw_scroll_bar :: (using scroll_bar: *ScrollBar) {
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
scrollbar := cast(*ScrollBar, next);
|
||||
|
||||
@ -789,7 +789,7 @@ ui_draw_scroll_bar :: (using scroll_bar: *ScrollBar) {
|
||||
.{0.94, 0.94, 0.94, 0.6}, .{0.94, 0.94, 0.94, 0.6}, 0);
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
}
|
||||
|
||||
ui_text_input :: (s: string, font_colour := Vector4.{1, 1, 1, 1}) {
|
||||
@ -873,8 +873,8 @@ ui_text_input :: (s: string, font_colour := Vector4.{1, 1, 1, 1}) {
|
||||
|
||||
ui_draw_text_input :: (using text_input: *TextInput) {
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
// if virtual_input.show_ui_debug_frames {
|
||||
// render_rectangle(pos, size);
|
||||
@ -891,7 +891,7 @@ ui_draw_text_input :: (using text_input: *TextInput) {
|
||||
}
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
|
||||
if text_input.text.count > 0 {
|
||||
//midline : Vector2 = pos + Vector2.{cast(float, margin + border_size + padding), xx (size.y / 2.0)};
|
||||
@ -1001,8 +1001,8 @@ ui_end_container :: () {
|
||||
|
||||
ui_draw_container :: (using container: *Container) {
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
if gradient {
|
||||
render_panel(null, pos + v2(margin), size - 2 * v2(margin), colour_left, colour_right, border_size);
|
||||
@ -1017,7 +1017,7 @@ ui_draw_container :: (using container: *Container) {
|
||||
}
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
}
|
||||
|
||||
ui_spacing :: (s: string) {
|
||||
@ -1090,8 +1090,8 @@ ui_progress_bar :: (s: string = "", progress: float, size: Vector2, background :
|
||||
|
||||
ui_draw_progress_bar :: (using bar: *ProgressBar) {
|
||||
// Backup GL state
|
||||
opengl_state : OpenGLState;
|
||||
save_opengl_state(*opengl_state);
|
||||
// opengl_state : OpenGLState;
|
||||
// save_opengl_state(*opengl_state);
|
||||
|
||||
render_panel(null, pos + v2(margin), min_size, background, background, border_size, 10.0);
|
||||
render_panel(null, pos + v2(margin), .{min_size.x * progress, min_size.y}, foreground, foreground, border_size, 10.0);
|
||||
@ -1103,7 +1103,7 @@ ui_draw_progress_bar :: (using bar: *ProgressBar) {
|
||||
}
|
||||
|
||||
// Restore modified GL state
|
||||
restore_opengl_state(*opengl_state);
|
||||
// restore_opengl_state(*opengl_state);
|
||||
}
|
||||
|
||||
ui_decompose_and_generate_id :: (parent: *Rect, s: string) -> string, UIKey {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user