Add text editor, misc changes
This commit is contained in:
162
build_file.cpp
162
build_file.cpp
@@ -1,75 +1,131 @@
|
||||
#include "src/build_tool/library.cpp"
|
||||
|
||||
struct Library {
|
||||
Array<S8_String> sources;
|
||||
Array<S8_String> objects;
|
||||
S8_String include_path;
|
||||
};
|
||||
|
||||
Library BuildZLib() {
|
||||
Library l = {};
|
||||
|
||||
l.sources.add("../src/external/zlib-1.3.1/adler32.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/compress.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/crc32.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/deflate.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/gzclose.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/gzlib.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/gzread.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/gzwrite.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/inflate.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/infback.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/inftrees.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/inffast.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/trees.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/uncompr.c");
|
||||
l.sources.add("../src/external/zlib-1.3.1/zutil.c");
|
||||
|
||||
l.include_path = "../src/external/zlib-1.3.1/";
|
||||
l.objects.add("adler32.obj");
|
||||
l.objects.add("compress.obj");
|
||||
l.objects.add("crc32.obj");
|
||||
l.objects.add("deflate.obj");
|
||||
l.objects.add("gzclose.obj");
|
||||
l.objects.add("gzlib.obj");
|
||||
l.objects.add("gzread.obj");
|
||||
l.objects.add("gzwrite.obj");
|
||||
l.objects.add("inflate.obj");
|
||||
l.objects.add("infback.obj");
|
||||
l.objects.add("inftrees.obj");
|
||||
l.objects.add("inffast.obj");
|
||||
l.objects.add("trees.obj");
|
||||
l.objects.add("uncompr.obj");
|
||||
l.objects.add("zutil.obj");
|
||||
|
||||
if (!OS_FileExists(l.objects[0])) {
|
||||
Array<S8_String> cmd = {};
|
||||
cmd.add("cl.exe -c -nologo -Zi -MP -FC ");
|
||||
cmd.add(S8_Format(Perm, "-I %.*s ", S8_Expand(l.include_path)));
|
||||
cmd += l.sources;
|
||||
Run(cmd);
|
||||
}
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
int main() {
|
||||
MA_InitScratch();
|
||||
SRC_InitCache(Perm, "pdf_browser.cache");
|
||||
|
||||
Array<S8_String> zlib_source = {};
|
||||
zlib_source.add("../src/external/zlib-1.3.1/adler32.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/compress.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/crc32.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/deflate.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/gzclose.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/gzlib.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/gzread.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/gzwrite.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/inflate.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/infback.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/inftrees.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/inffast.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/trees.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/uncompr.c");
|
||||
zlib_source.add("../src/external/zlib-1.3.1/zutil.c");
|
||||
|
||||
S8_String zlib_include = "../src/external/zlib-1.3.1/";
|
||||
Array<S8_String> zlib_objects = {};
|
||||
zlib_objects.add("adler32.obj");
|
||||
zlib_objects.add("compress.obj");
|
||||
zlib_objects.add("crc32.obj");
|
||||
zlib_objects.add("deflate.obj");
|
||||
zlib_objects.add("gzclose.obj");
|
||||
zlib_objects.add("gzlib.obj");
|
||||
zlib_objects.add("gzread.obj");
|
||||
zlib_objects.add("gzwrite.obj");
|
||||
zlib_objects.add("inflate.obj");
|
||||
zlib_objects.add("infback.obj");
|
||||
zlib_objects.add("inftrees.obj");
|
||||
zlib_objects.add("inffast.obj");
|
||||
zlib_objects.add("trees.obj");
|
||||
zlib_objects.add("uncompr.obj");
|
||||
zlib_objects.add("zutil.obj");
|
||||
|
||||
if (!OS_FileExists(zlib_objects[0])) {
|
||||
Array<S8_String> cmd = {};
|
||||
cmd.add("cl.exe -c -nologo -Zi -MP -FC ");
|
||||
cmd.add(S8_Format(Perm, "-I %.*s ", S8_Expand(zlib_include)));
|
||||
cmd += zlib_source;
|
||||
Run(cmd);
|
||||
}
|
||||
|
||||
int result = 0;
|
||||
|
||||
if (0) {
|
||||
Array<S8_String> cmd = {};
|
||||
cmd.add("cl.exe -nologo -Zi -MP -FC -Fe:pdf_browser.exe");
|
||||
cmd.add(S8_Format(Perm, "-I %.*s ", S8_Expand(zlib_include)));
|
||||
cmd += zlib_objects;
|
||||
cmd += "Advapi32.lib";
|
||||
cmd.add("../src/pdf_browser/main.cpp");
|
||||
cmd.add("../src/pdf_browser/win32.cpp");
|
||||
cmd.add("cl.exe");
|
||||
cmd.add("-Fe:transcript_browser.exe");
|
||||
cmd.add("-Fd:transcript_browser.pdb");
|
||||
cmd.add("/MP /Zi /FC /nologo");
|
||||
cmd.add("/WX /W3 /wd4200 /diagnostics:column");
|
||||
cmd.add("/Oi");
|
||||
cmd.add("-std:c++20"); // semaphore
|
||||
|
||||
cmd.add("-D_CRT_SECURE_NO_WARNINGS");
|
||||
if (1) {
|
||||
cmd.add("-DDEBUG_BUILD=1");
|
||||
cmd.add("-DRELEASE_BUILD=0");
|
||||
// cmd.add("-D_DEBUG /MDd");
|
||||
} else {
|
||||
cmd.add("-DDEBUG_BUILD=0");
|
||||
cmd.add("-DRELEASE_BUILD=1");
|
||||
cmd.add("/O2 /MT /DNDEBUG /GL");
|
||||
}
|
||||
|
||||
cmd.add("-I ../src/external/raylib/include");
|
||||
cmd.add("../src/transcript_browser/main.cpp");
|
||||
cmd.add("../src/transcript_browser/win32.cpp");
|
||||
|
||||
cmd.add("/link");
|
||||
cmd.add("../src/external/raylib/lib/raylib.lib");
|
||||
cmd.add("opengl32.lib kernel32.lib user32.lib gdi32.lib winmm.lib msvcrt.lib shell32.lib");
|
||||
cmd.add("/NODEFAULTLIB:LIBCMT");
|
||||
cmd.add("/incremental:no");
|
||||
|
||||
OS_DeleteFile("transcript_browser.pdb");
|
||||
result += Run(cmd);
|
||||
}
|
||||
|
||||
if (1) {
|
||||
Array<S8_String> cmd = {};
|
||||
cmd.add("cl.exe -nologo -Zi -MP -FC -Fe:transcript_browser.exe");
|
||||
cmd.add("cl.exe");
|
||||
cmd.add("-Fe:text_editor.exe");
|
||||
cmd.add("-Fd:text_editor.pdb");
|
||||
cmd.add("/MP /Zi /FC /nologo");
|
||||
cmd.add("/WX /W3 /wd4200 /diagnostics:column");
|
||||
cmd.add("/Oi");
|
||||
cmd.add("-std:c++20"); // semaphore
|
||||
|
||||
cmd.add("-D_CRT_SECURE_NO_WARNINGS");
|
||||
if (1) {
|
||||
cmd.add("-DDEBUG_BUILD=1");
|
||||
cmd.add("-DRELEASE_BUILD=0");
|
||||
// cmd.add("-D_DEBUG /MDd");
|
||||
} else {
|
||||
cmd.add("-DDEBUG_BUILD=0");
|
||||
cmd.add("-DRELEASE_BUILD=1");
|
||||
cmd.add("/O2 /MT /DNDEBUG /GL");
|
||||
}
|
||||
|
||||
cmd.add("-I ../src/external/raylib/include");
|
||||
cmd.add("-std:c++20");
|
||||
cmd.add("../src/transcript_browser/main.cpp");
|
||||
cmd.add("../src/text_editor/main.cpp");
|
||||
cmd.add("../src/transcript_browser/win32.cpp");
|
||||
|
||||
cmd.add("/link");
|
||||
cmd.add("../src/external/raylib/lib/raylib.lib");
|
||||
cmd.add("opengl32.lib kernel32.lib user32.lib gdi32.lib winmm.lib msvcrt.lib shell32.lib");
|
||||
cmd.add("/link /NODEFAULTLIB:LIBCMT");
|
||||
cmd.add("/NODEFAULTLIB:LIBCMT");
|
||||
cmd.add("/incremental:no");
|
||||
|
||||
OS_DeleteFile("text_editor.pdb");
|
||||
result += Run(cmd);
|
||||
}
|
||||
|
||||
|
||||
@@ -633,27 +633,27 @@ struct Array {
|
||||
|
||||
struct UTF32Result {
|
||||
uint32_t out_str;
|
||||
int advance;
|
||||
int error;
|
||||
int64_t advance;
|
||||
int64_t error;
|
||||
};
|
||||
|
||||
struct UTF8Result {
|
||||
uint8_t out_str[4];
|
||||
int len;
|
||||
int error;
|
||||
int64_t len;
|
||||
int64_t error;
|
||||
};
|
||||
|
||||
struct UTF16Result {
|
||||
uint16_t out_str[2];
|
||||
int len;
|
||||
int error;
|
||||
int64_t len;
|
||||
int64_t error;
|
||||
};
|
||||
|
||||
struct UTF8Iter {
|
||||
char *data;
|
||||
int len;
|
||||
int utf8_codepoint_byte_size;
|
||||
int i;
|
||||
int64_t len;
|
||||
int64_t utf8_codepoint_byte_size;
|
||||
int64_t i;
|
||||
uint32_t item;
|
||||
|
||||
UTF8Iter &operator++() {
|
||||
@@ -664,7 +664,7 @@ struct UTF8Iter {
|
||||
friend bool operator!=(const UTF8Iter &a, const UTF8Iter &b) { return a.item != b.item; }
|
||||
UTF8Iter &operator*() { return *this; }
|
||||
UTF8Iter begin() {
|
||||
UTF8Iter IterateUTF8Ex(char *data, int len);
|
||||
UTF8Iter IterateUTF8Ex(char *data, int64_t len);
|
||||
return {IterateUTF8Ex(data, len)};
|
||||
}
|
||||
UTF8Iter end() { return {}; }
|
||||
@@ -674,7 +674,7 @@ using String = Slice<char>;
|
||||
using String16 = Slice<wchar_t>;
|
||||
bool IsValid(UTF8Iter &iter);
|
||||
void Advance(UTF8Iter *iter);
|
||||
UTF8Iter IterateUTF8Ex(char *data, int len);
|
||||
UTF8Iter IterateUTF8Ex(char *data, int64_t len);
|
||||
UTF8Iter IterateUTF8(char *data);
|
||||
UTF8Iter IterateUTF8(String string);
|
||||
|
||||
@@ -758,7 +758,7 @@ struct Table {
|
||||
size_t old_cap = cap;
|
||||
|
||||
values = (Entry *)AllocSize(allocator, sizeof(Entry) * size);
|
||||
for (int i = 0; i < size; i += 1) values[i] = {};
|
||||
for (int64_t i = 0; i < size; i += 1) values[i] = {};
|
||||
cap = size;
|
||||
|
||||
Assert(!(old_values == 0 && len != 0));
|
||||
@@ -983,7 +983,7 @@ struct Scratch {
|
||||
//
|
||||
#ifdef BASIC_IMPL
|
||||
|
||||
UTF32Result UTF16ToUTF32(uint16_t *c, int max_advance) {
|
||||
UTF32Result UTF16ToUTF32(uint16_t *c, int64_t max_advance) {
|
||||
UTF32Result result;
|
||||
MemoryZero(&result, sizeof(result));
|
||||
if (max_advance >= 1) {
|
||||
@@ -1032,7 +1032,7 @@ UTF8Result UTF32ToUTF8(uint32_t codepoint) {
|
||||
return result;
|
||||
}
|
||||
|
||||
UTF32Result UTF8ToUTF32(char *c, int max_advance) {
|
||||
UTF32Result UTF8ToUTF32(char *c, int64_t max_advance) {
|
||||
UTF32Result result;
|
||||
MemoryZero(&result, sizeof(result));
|
||||
|
||||
@@ -1101,7 +1101,7 @@ UTF16Result UTF32ToUTF16(uint32_t codepoint) {
|
||||
int64_t CreateCharFromWidechar(char *buffer, int64_t buffer_size, wchar_t *in, int64_t inlen) {
|
||||
int64_t outlen = 0;
|
||||
for (int64_t i = 0; i < inlen && in[i];) {
|
||||
UTF32Result decode = UTF16ToUTF32((uint16_t *)(in + i), (int)(inlen - i));
|
||||
UTF32Result decode = UTF16ToUTF32((uint16_t *)(in + i), (int64_t)(inlen - i));
|
||||
if (!decode.error) {
|
||||
i += decode.advance;
|
||||
UTF8Result encode = UTF32ToUTF8(decode.out_str);
|
||||
@@ -1122,7 +1122,7 @@ int64_t CreateCharFromWidechar(char *buffer, int64_t buffer_size, wchar_t *in, i
|
||||
int64_t CreateWidecharFromChar(wchar_t *buffer, int64_t buffer_size, char *in, int64_t inlen) {
|
||||
int64_t outlen = 0;
|
||||
for (int64_t i = 0; i < inlen;) {
|
||||
UTF32Result decode = UTF8ToUTF32(in + i, (int)(inlen - i));
|
||||
UTF32Result decode = UTF8ToUTF32(in + i, (int64_t)(inlen - i));
|
||||
if (!decode.error) {
|
||||
i += decode.advance;
|
||||
UTF16Result encode = UTF32ToUTF16(decode.out_str);
|
||||
@@ -1156,7 +1156,7 @@ void Advance(UTF8Iter *iter) {
|
||||
iter->item = r.out_str;
|
||||
}
|
||||
|
||||
UTF8Iter IterateUTF8Ex(char *data, int len) {
|
||||
UTF8Iter IterateUTF8Ex(char *data, int64_t len) {
|
||||
UTF8Iter result;
|
||||
MemoryZero(&result, sizeof(result));
|
||||
result.data = data;
|
||||
@@ -1166,7 +1166,7 @@ UTF8Iter IterateUTF8Ex(char *data, int len) {
|
||||
}
|
||||
|
||||
UTF8Iter IterateUTF8(char *data) {
|
||||
int length = 0;
|
||||
int64_t length = 0;
|
||||
while (data[length]) length += 1;
|
||||
return IterateUTF8Ex(data, length);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,37 @@
|
||||
import os, sys
|
||||
import pypdf
|
||||
|
||||
reader = pypdf.PdfReader("C:/Users/Karol/Desktop/Hegels-Logic.pdf")
|
||||
if len(sys.argv) != 2:
|
||||
print("expected single argument with filename or folder to extract text from")
|
||||
exit(0)
|
||||
|
||||
f = open("asd.txt", "w", encoding="utf-8")
|
||||
for i in range(len(reader.pages)):
|
||||
page = reader.pages[i]
|
||||
text = page.extract_text()
|
||||
text = text.replace("\n", "")
|
||||
text = text.replace("-", "")
|
||||
|
||||
f.write(f">>>>>>>>{i + 1}<<<<<<<<<\n")
|
||||
f.write(text)
|
||||
f.write("\n")
|
||||
def write_pdf_for(filename):
|
||||
reader = pypdf.PdfReader(filename)
|
||||
extract_filename = filename + ".txt"
|
||||
if os.path.exists(extract_filename):
|
||||
print(f"skipping {extract_filename}, file exists")
|
||||
return
|
||||
|
||||
f.close()
|
||||
f = open(extract_filename, "w", encoding="utf-8")
|
||||
for i in range(len(reader.pages)):
|
||||
page = reader.pages[i]
|
||||
text = page.extract_text()
|
||||
text = text.replace("\n", "")
|
||||
text = text.replace("-", "")
|
||||
|
||||
f.write(f">>>>>>>>{i + 1}<<<<<<<<<\n")
|
||||
f.write(text)
|
||||
f.write("\n")
|
||||
|
||||
f.close()
|
||||
print(f"generated: {extract_filename}")
|
||||
|
||||
if os.path.isdir(sys.argv[1]):
|
||||
for file in os.listdir(sys.argv[1]):
|
||||
if file.endswith(".pdf"):
|
||||
write_pdf_for(file)
|
||||
elif os.path.isfile(sys.argv[1]):
|
||||
write_pdf_for(sys.argv[1])
|
||||
else:
|
||||
print(f"argument you passed in: {sys.argv[1]} is not a filename or folder")
|
||||
17
src/text_editor/main.cpp
Normal file
17
src/text_editor/main.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#define BASIC_IMPL
|
||||
#include "../pdf_browser/basic.h"
|
||||
|
||||
#include "raylib.h"
|
||||
|
||||
int main() {
|
||||
InitWindow(1280, 720, "Text editor");
|
||||
SetWindowState(FLAG_WINDOW_RESIZABLE);
|
||||
SetTargetFPS(60);
|
||||
|
||||
while (!WindowShouldClose()) {
|
||||
BeginDrawing();
|
||||
ClearBackground(RAYWHITE);
|
||||
EndDrawing();
|
||||
}
|
||||
CloseWindow();
|
||||
}
|
||||
@@ -103,11 +103,11 @@ void AddFolder(String folder, Array<String> *filenames, Array<XToTimeString> *x_
|
||||
}
|
||||
}
|
||||
|
||||
int thread_count = 16;
|
||||
int64_t thread_count = 16;
|
||||
Array<std::thread *> threads = {scratch};
|
||||
int files_per_thread = srt_files.len / thread_count;
|
||||
int remainder = srt_files.len % thread_count;
|
||||
int fi = 0;
|
||||
int64_t files_per_thread = srt_files.len / thread_count;
|
||||
int64_t remainder = srt_files.len % thread_count;
|
||||
int64_t fi = 0;
|
||||
|
||||
Array<ParseThreadIO> io = {scratch};
|
||||
io.reserve(thread_count);
|
||||
@@ -298,7 +298,7 @@ int main() {
|
||||
|
||||
float font_size = 20;
|
||||
float y = 0;
|
||||
int xwidth = MeasureTextEx(font, "_", font_size, 1).x;
|
||||
int xwidth = (int)MeasureTextEx(font, "_", font_size, 1).x;
|
||||
|
||||
if (ItemFound) {
|
||||
uintptr_t begin_region = (uintptr_t)XArena.data;
|
||||
@@ -321,7 +321,7 @@ int main() {
|
||||
String line = it.get_prefix(per_line);
|
||||
|
||||
if (ItemFound->string.data >= line.data && ItemFound->string.data < line.data + line.len) {
|
||||
DrawRectangleLines(0, y + font_size, GetRenderWidth(), 2, SKYBLUE);
|
||||
DrawRectangleLines(0, (int)(y + font_size), GetRenderWidth(), 2, SKYBLUE);
|
||||
}
|
||||
|
||||
String line_terminated = Copy(*frame_arena, line);
|
||||
@@ -354,8 +354,8 @@ int main() {
|
||||
|
||||
String string_first = Copy(*frame_arena, {(char *)begin, (int64_t)(it.data - begin)});
|
||||
String string_middle = Copy(*frame_arena, it);
|
||||
int width = MeasureTextEx(font, string_first.data, font_size, 1).x;
|
||||
if (chosen_text == i) DrawRectangleLines(0, y + font_size, GetRenderWidth(), 2, SKYBLUE);
|
||||
int width = (int)MeasureTextEx(font, string_first.data, font_size, 1).x;
|
||||
if (chosen_text == i) DrawRectangleLines(0, (int)(y + font_size), GetRenderWidth(), 2, SKYBLUE);
|
||||
|
||||
String num = Format(*frame_arena, "%d", i);
|
||||
DrawTextEx(font, num.data, {0, y}, font_size, 1, DARKGRAY);
|
||||
|
||||
Reference in New Issue
Block a user