Commit Graph
82 Commits
Author SHA1 Message Date
Jeroen van RijnandGitHub ab12ca69af Merge pull request #1040 from Kelimion/zlib_optimize
Adler32 speedup.
2021-06-24 19:15:22 +02:00
Jeroen van Rijn 17748f18b9 Adler32 speedup. 2021-06-24 19:06:39 +02:00
Jeroen van RijnandGitHub f62f40e508 Merge pull request #1039 from Kelimion/zlib_optimize
ZLIB: Another 10%+ faster.
2021-06-24 15:02:02 +02:00
Jeroen van Rijn 980aa37bee ZLIB: Another 10%+ faster. 2021-06-24 14:56:28 +02:00
Jeroen van RijnandGitHub 824efc82b9 Merge pull request #1036 from Kelimion/zlib_optimize
ZLIB: More faster.
2021-06-23 22:25:02 +02:00
Jeroen van Rijn 1cfe226686 ZLIB: More faster. 2021-06-23 22:18:17 +02:00
Jeroen van RijnandGitHub ea0ce7bd2c Merge pull request #1035 from Kelimion/zlib_optimize
Zlib optimize
2021-06-23 20:15:32 +02:00
Jeroen van Rijn 342adb627d All reads now skip stream if in memory. 2021-06-23 16:32:48 +02:00
Jeroen van Rijn a70635d2f6 Most reads now go through buffer for zlib. 2021-06-23 16:32:48 +02:00
Jeroen van Rijn 5cb16c4cd1 All reads now go through read_slice. 2021-06-23 16:32:48 +02:00
Jeroen van Rijn 538004ba5f Introduce read_slice, make read_u8 use it. 2021-06-23 16:32:48 +02:00
Jeroen van Rijn 8663c64e47 Refactor ZLIB structs. 2021-06-23 16:32:47 +02:00
Jeroen van RijnandGitHub fb2e1c32bd Merge pull request #1034 from Kelimion/bytes_util
Move `bytes` utils back to EXR code for the time being.
2021-06-22 16:48:07 +02:00
Jeroen van Rijn ae0b8fce44 Move bytes utils back to EXR code for the time being.
Also, allow PNG example to be run directly from `core:image/png` directory.
2021-06-22 16:39:00 +02:00
Jeroen van RijnandGitHub d2e55f9ffa Merge pull request #1032 from Kelimion/png_fix
PNG: Fix leak if you don't ask for metadata.
2021-06-21 22:56:39 +02:00
Jeroen van Rijn d5e2b387fa PNG: Fix leak if you don't ask for metadata. 2021-06-21 22:47:54 +02:00
Jeroen van RijnandGitHub 922b511a24 Merge pull request #1031 from Kelimion/zlib_fix
ZLIB: fix.
2021-06-21 22:16:56 +02:00
Jeroen van Rijn 9de9111082 ZLIB: fix. 2021-06-21 22:15:04 +02:00
Jeroen van RijnandGitHub 5a7fe2e3d9 Merge pull request #1030 from Kelimion/zlib_optimize
Comment out tracy imports.
2021-06-21 21:43:57 +02:00
Jeroen van Rijn 1e8c12c2a3 Comment out tracy imports. 2021-06-21 21:41:56 +02:00
Jeroen van RijnandGitHub b92c70e55c Merge pull request #1029 from Kelimion/zlib_optimize
ZLIB: Start optimization.
2021-06-21 21:26:52 +02:00
Jeroen van Rijn 352494cbb4 ZLIB: Start optimization. 2021-06-21 21:05:52 +02:00
Jeroen van RijnandGitHub 797c41950a Merge pull request #1027 from Kelimion/png
Replace `core:image`'s `sidecar` with explicit pointer and type
2021-06-21 16:41:38 +02:00
Jeroen van Rijn e036a321a0 Replace core:image's sidecar with explicit metadata_ptr and metadata_type.
To unpack, use:
```odin

v: ^png.Info;

if img.metadata_ptr != nil && img.metadata_type == png.Info {
	v = (^png.Info)(img.metadata_ptr);
	...
}
```
2021-06-21 16:32:42 +02:00
Jeroen van RijnandGitHub 18471f358e Merge pull request #1025 from Kelimion/png_info
Change PNG's img.sidecar to ^Info, make img.depth an int.
2021-06-20 18:40:46 +02:00
Jeroen van Rijn 55d09251d8 Change PNG's img.sidecar to ^Info, make img.depth an int.
For compatibility with the upcoming OpenEXR code, img.depth is now an int.
Like OpenEXR's code, it will now also return metadata as ^Info instead of Info.

The example was updated to retrieve the metadata this way.

It regrettably does not fix: #1018. That seems to be a codegen issue in the test runner or elsewhere.
2021-06-20 18:27:23 +02:00
Jeroen van RijnandGitHub d66fd71d21 Merge pull request #1024 from Kelimion/defer_fix
GZIP defer diverging fix in gzip example.
2021-06-20 17:40:15 +02:00
Jeroen van RijnandGitHub f10fc2a494 Merge pull request #1023 from Kelimion/test_runner_fix
Fix Windows test runner.
2021-06-20 17:37:04 +02:00
Jeroen van Rijn 055d8c5370 Fix Windows test runner. 2021-06-20 17:33:39 +02:00
Jeroen van Rijn 955472bd21 GZIP defer diverging fix in gzip example. 2021-06-20 17:21:18 +02:00
Jeroen van Rijn 8a4b9ddaa3 Fix comment. 2021-06-18 15:42:04 +02:00
Jeroen van Rijn 54a2b6f00e Add bytes.buffer_create_of_type and bytes.buffer_convert_to_type.
Convenience functions to reinterpret or cast one buffer to another type, or create a buffer of a specific type.

	Example:
```odin
	fmt.println("Convert []f16le (x2) to []f32 (x2).");
	b := []u8{0, 60, 0, 60}; // == []f16{1.0, 1.0}

	res, backing, had_to_allocate, err := bytes.buffer_convert_to_type(2, f32, f16le, b);
	fmt.printf("res      : %v\n", res);              // [1.000, 1.000]
	fmt.printf("backing  : %v\n", backing);          // &Buffer{buf = [0, 0, 128, 63, 0, 0, 128, 63], off = 0, last_read = Invalid}
	fmt.printf("allocated: %v\n", had_to_allocate);  // true
	fmt.printf("err      : %v\n", err);              // false

	if had_to_allocate { defer bytes.buffer_destroy(backing); }

	fmt.println("\nConvert []f16le (x2) to []u16 (x2).");

	res2: []u16;
	res2, backing, had_to_allocate, err = bytes.buffer_convert_to_type(2, u16, f16le, b);
	fmt.printf("res      : %v\n", res2);             // [15360, 15360]
	fmt.printf("backing  : %v\n", backing);          // Buffer.buf points to `b` because it could be converted in-place.
	fmt.printf("allocated: %v\n", had_to_allocate);  // false
	fmt.printf("err      : %v\n", err);              // false

	if had_to_allocate { defer bytes.buffer_destroy(backing); }

	fmt.println("\nConvert []f16le (x2) to []u16 (x2), force_convert=true.");

	res2, backing, had_to_allocate, err = bytes.buffer_convert_to_type(2, u16, f16le, b, true);
	fmt.printf("res      : %v\n", res2);             // [1, 1]
	fmt.printf("backing  : %v\n", backing);          // Buffer.buf points to `b` because it could be converted in-place.
	fmt.printf("allocated: %v\n", had_to_allocate);  // false
	fmt.printf("err      : %v\n", err);              // false

	if had_to_allocate { defer bytes.buffer_destroy(backing); }
```
2021-06-18 15:25:36 +02:00
Jeroen van RijnandGitHub bc4591fc1e Merge pull request #1006 from jockus/master
Fix for value rather than type used for intrinsics
2021-05-31 14:23:40 +02:00
Jeroen van Rijn d7dba495fd Last of the Endian float in math.odin. 2021-05-29 18:27:43 +02:00
Jeroen van Rijn c05f6b4a31 Even more Endian maths. 2021-05-29 17:52:47 +02:00
Jeroen van Rijn a0a578c72a More Endian version of maths procs. 2021-05-29 17:21:54 +02:00
Jeroen van Rijn 55fc2c00c0 Add Endian versions of math routines. 2021-05-29 16:22:47 +02:00
Jeroen van Rijn 6944e2fc04 Add abs_f16 dependency when used. 2021-05-29 15:33:11 +02:00
Jeroen van Rijn 03862d1f48 Mark mem.slice_ptr_to_bytes as deprecated.
Use byte_slice instead.

We can't make it an alias *and* mark it as deprecated, regrettably:

```odin
byte_slice :: #force_inline proc "contextless" (data: rawptr, len: int) -> []byte {
    return transmute([]u8)Raw_Slice{data=data, len=max(len, 0)};
}
@(deprecated="use byte_slice")
slice_ptr_to_bytes :: byte_slice;

"mem.odin(145:1) Constant alias declarations cannot have attributes"
```
2021-05-06 13:23:17 +02:00
Jeroen van RijnandGitHub 15ce8b0454 Merge pull request #946 from Kelimion/virtual_allocator
Fix typo in core:mem alloc() comment.
2021-05-06 11:33:08 +02:00
Jeroen van Rijn 4f51d74fc2 Fix typo in core:mem alloc() comment. 2021-05-06 11:25:41 +02:00
Jeroen van RijnandGitHub f3c4d97250 Merge pull request #942 from Kelimion/grayscale-alpha-extract
Fix gray+alpha alpha extract.
2021-05-04 17:49:09 +02:00
Jeroen van Rijn afb6ebd21e Fix gray+alpha alpha extract. 2021-05-04 17:48:43 +02:00
Jeroen van RijnandGitHub 3cf26af600 Merge pull request #941 from Kelimion/compress_error_handling
Change General_Error.OK to nil
2021-05-03 15:39:42 +02:00
Jeroen van Rijn 9a39ce6b75 Change General_Error.OK to nil 2021-05-03 15:38:43 +02:00
Jeroen van RijnandGitHub ca0f36be42 Merge pull request #940 from Kelimion/convert_error_checks
Convert `core:compress` and `core:image` error checks to new union co…
2021-05-03 15:09:52 +02:00
Jeroen van Rijn 59b3c472ca Convert core:compress and core:image error checks to new union comparison.
No more need for `is_kind(err, Error_Value)`, just test err == Error_Value.
2021-05-03 15:08:34 +02:00
Jeroen van RijnandGitHub 448f834b28 Remove debug print in image helper. 2021-05-03 01:23:03 +02:00
Jeroen van RijnandGitHub 9212e3176a Merge pull request #939 from Kelimion/new_png_post_processing
Don't need other path for grayscale output.
2021-05-02 21:17:00 +02:00
Jeroen van Rijn 3160a6a12c Don't need other path for grayscale output. 2021-05-02 21:11:06 +02:00
Jeroen van RijnandGitHub ef7b72d14c Merge pull request #938 from Kelimion/new_png_post_processing
Add new PNG post processing options.
2021-05-02 20:39:33 +02:00
Jeroen van Rijn 7d534769d6 Add new PNG post processing options. 2021-05-02 20:38:30 +02:00
Jeroen van RijnandGitHub 0a81fcc2af Merge pull request #937 from Kelimion/core_time
datetime_to_time's ok should default to true.
2021-05-02 13:24:33 +02:00
Jeroen van Rijn 2451014b6e datetime_to_time's ok should default to true. 2021-05-02 13:23:57 +02:00
Jeroen van Rijn 038337fd07 Port core:sys/win32 tests to test runner. 2021-05-02 00:10:00 +02:00
Jeroen van RijnandGitHub 2dbdff07c5 Merge pull request #935 from Kelimion/zlib_level_0
ZLIB level 0: LEN/NLEN = i16.
2021-05-01 21:57:36 +02:00
Jeroen van Rijn 2ad8f99790 ZLIB level 0: LEN/NLEN = i16. 2021-05-01 21:56:45 +02:00
Jeroen van RijnandGitHub 0a0ba95e85 Merge pull request #934 from Kelimion/paeth
Fix Paeth for bit depth < 8.
2021-05-01 20:39:40 +02:00
Jeroen van Rijn 433d742183 Fix Paeth for bit depth < 8. 2021-05-01 20:39:00 +02:00
Jeroen van RijnandGitHub 1ef9b094b6 Merge pull request #932 from Kelimion/png_blend_test
PNG: Fix tRNS handling.
2021-05-01 18:28:23 +02:00
Jeroen van Rijn 0659a11a1a PNG: Fix tRNS handling. 2021-05-01 18:24:31 +02:00
Jeroen van RijnandGitHub ae907bf724 Merge pull request #931 from Kelimion/png_blend_test
Fix a few more cases in which bKGD wasn't properly applied.
2021-05-01 16:05:48 +02:00
Jeroen van Rijn db1ef078ff Fix a few more cases in which bKGD wasn't properly applied. 2021-05-01 16:05:13 +02:00
Jeroen van RijnandGitHub c2603297ee Merge pull request #928 from Kelimion/png_blend_test
PNG: Fix test for when premultiplication is needed.
2021-05-01 13:25:49 +02:00
Jeroen van Rijn a02bcd3bfd PNG: Fix test for when premultiplication is needed. 2021-05-01 13:16:47 +02:00
Jeroen van RijnandGitHub 7ef30355cb Merge pull request #924 from Kelimion/core_compress
Add `compress` and `image` to core.
2021-04-30 11:33:41 +02:00
Jeroen van Rijn 06f1eaa153 Use regular allocator from png+gzip's load_from_file.
I would've used `os.stream_from_handle`, but:
- Parts of it seem to be implemented for Windows only at the moment.
- PNG's `peek_data` using that stream didn't manage to rewind and thus tried to parse the data after the header as the header.

Two things must happen:
- The `os.stream_from_handle` implementation needs to be fixed.
- PNG and GZIP's parsers need to be able to handle streams that can't rewind or seek (backward).

Those fixes are on my TODO list but are exceed the scope of this patch.
2021-04-30 09:35:43 +02:00
Jeroen van Rijn 58e023e0cf Add compress and image to core. 2021-04-30 00:21:52 +02:00
Jeroen van Rijn 2942e45ff5 Placate -vet for unrelated core:thread update. 2021-04-13 02:23:14 +02:00
Jeroen van Rijn aca5c7c1c6 Placate -vet. 2021-04-13 02:18:47 +02:00
Jeroen van Rijn a1d871360c Add support to core:windows to add/delete users.
main :: proc() {

	using fmt;
	using windows;

	username := "testuser";
	password := "testpass";

	ok := add_user("", username, password);
	fmt.printf("add_user: %v\n", ok);
	pi := windows.PROCESS_INFORMATION{};

	ok2, path := windows.add_user_profile(username);
	fmt.printf("add_user_profile: %v, %v\n", ok2, path);

	ok3 := windows.delete_user_profile(username);
	fmt.printf("delete_user_profile: %v\n", ok3);

	ok4 := windows.delete_user("", username);
	fmt.printf("delete_user: %v\n", ok4);

	// Has optional bool to not wait on the process before returning.
	b := run_as_user(username, password, "C:\\Repro\\repro.exe", "Hellope!", &pi);
	fmt.printf("run_as_user: %v %v\n", b, pi);
}
2021-04-13 02:09:44 +02:00
Jeroen van Rijn f4d0f74dbb Allow seeding CRC32, CRC64 & Adler32 with previous partial hash.
Foo  := []u8{'F', 'o','o', '3', 'F', 'o', 'o', '4'};
crc     := hash.crc32(Foo[0:4]);
crc      = hash.crc32(Foo[4:], crc);
crc_all := hash.crc32(Foo);

fmt.printf("%8x %8x\n", crc, crc_all);
d6285ff7 d6285ff7

a32     := hash.adler32(Foo[0:4]);
a32      = hash.adler32(Foo[4:], a32);
a32_all := hash.adler32(Foo);

fmt.printf("%8x %8x\n", a32, a32_all);
0c5102b0 0c5102b0
2021-03-25 13:48:34 +01:00
Jeroen van Rijn 06c5a7fb3e Correct overflowed months. 2021-03-23 18:49:50 +01:00
Jeroen van Rijn 781f784375 Add core:datetime_to_time
datetime_to_time takes separate parameters for date and time values and returns a time.Time and an `ok` bool.

If the values are out of range, they're considered modulo and ok will be set to false.
2021-03-23 18:41:40 +01:00
Jeroen van Rijn d80670fe0c Fix typo in cubic(). 2021-03-16 16:34:59 +01:00
Jeroen van Rijn cefde23232 Remove double removal of extension when using the -out option.
When specifying the out parameter, the extension was stripped twice.
If your path contains a ".", this caused issues.

e.g.
cd "C:\Repro\Path With a . In The Name\"
odin run repro.odin -keep-temp-files -out repro.exe

This would cause the files to end up as:
"C:\Repro\Path With a.exe", "C:\Repro\Path With a.ll", "C:\Repro\Path With a.bc" and "C:\Repro\Path With a.obj"

With this patch it works as expected, with or without a . in the file path.
2021-03-06 23:09:15 +01:00
Jeroen van RijnandGitHub 5dcb5c2ba3 Merge pull request #367 from kevinw/fix-json-parsing
Fix some JSON parsing bugs.
2019-04-06 16:35:46 +02:00
Jeroen van RijnandGitHub 9d552d04ea Merge pull request #358 from kevinw/master
Fix some -vet warnings; change import to core:math/bits
2019-04-06 16:34:01 +02:00
Jeroen van RijnandGitHub 290c111206 Merge pull request #355 from mattt-b/master
Replace calls to deprecated string functions on linux
2019-03-18 15:27:07 +01:00
Jeroen van RijnandGitHub 4446a1431a Merge pull request #348 from Kelimion/master
Add win32.get_cwd for current working directory and convenience functions for open + save dialogs.
2019-03-09 12:51:14 +01:00
Jeroen van RijnandGitHub 8c618225bf Merge pull request #347 from Kelimion/master
Fix typo in `cel` tokeniser.
2019-03-04 13:46:51 +01:00
Jeroen van RijnandGitHub 8fb8b5ed7e Merge pull request #346 from Kelimion/fix-issue-345
Fix #345: panic when using enum as map key
2019-03-03 13:00:00 +01:00