# LexLib
a**Lex**evier's **Lib**rary
is a C/Rust library with miscellaneous things that the C stdlib is missing and some other things that can be useful.
also works on C++ without hassle.
## features
+ os abstractions for linux and windows.
+ image manipulation.
+ color manipulation.
+ raw C strings manipulation.
+ simd vector math.
+ small math things.
+ timing.
+ vector (growable array).
# Rust
for C functions that have a equivalent or better options in the Rust stdlib are not expected to be wrapped around a safe interface.
right now a rust compiler is not necessary but in the future it might.
some features (like vector math) are not available yet in the rust side.
# Documentation
C: in the header files.
Rust: https://docs.rs/lexlib/latest/lexlib/
# Dependencies
+ libc
+ win32api (kernel32)
# License
Licensed under the zlib license.
# Changelog
## 2.0.1
+ fix LEXLIB_VEC2I/3I_ZERO.
+ fix cfile mode in windows.
+ LexlibVec(T).
+ lexlibStrNew().
## 2.0.0
+ changed license to zlib.
+ rust bindings and wrappers.
+ gray_scale with alpha support.
+ structs are not typedef'd anymore.
+ SIMD support.
+ reworked Vec4 math.
+ reworked image loading.
+ LexlibColorFlt -> LexlibColorF.
+ LexlibImage.depth -> LexlibImage.bpc.
+ lexlibImagePixelGet() -> lexlibImagePixel().
+ lexlibImagePixel16Get() -> lexlibImagePixel16().
+ lexlibMillis() -> lexlibTimeMillis().
+ lexlibSeconds() -> lexlibTimeSeconds().
+ lexlibStrcat() -> lexlibStrCat().
+ added typedef.h.
+ added vec.h (growable array).
+ removed path.
+ removed aabb.
+ removed LexlibBytes.
+ removed lexlibFileToString().
+ removed lexlibStringToFile().
+ removed lexlibFileBytes().
+ removed lexlibPrintTimed().
+ removed lexlibVersion().
+ removed LEXLIB_UNREACHABLE.
+ LexlibBool.
+ lexlibStrFile().
+ LEXLIB_STRING().
+ lexlibCFileMap().
+ lexlibCFileMode().
+ lexlibCFileSize().
+ lexlibCFileType().
+ lexlibColorGrayAlpha().
+ lexlibTimeNanos().
+ lexlibTimeMicros().
+ lexlibThrdNanos().
+ lexlibThrdMicros().
+ lexlibThrdMillis().
+ lexlibThrdSeconds().
+ lexlibProcNanos().
+ lexlibProcMicros().
+ lexlibProcMillis().
+ lexlibProcSeconds().
+ lexlibTimerAdd().
+ LEXLIB_CLAMP().
+ lexlibRad().
+ lexlibDeg():
+ lexlibFloatCmp().
+ lexlibMemUnmap().
+ lexlibMemReverse16().
+ lexlibMemReverse32().
+ lexlibMemReverse64().
+ lexlibImageCopy().
+ lexlibImageFillArea().
+ lexlibImageLoadBmpMem().
+ lexlibVecNew().
+ lexlibVecDelete().
+ lexlibVecGet().
+ lexlibVecPush().
+ lexlibVecPop().
+ lexlibVecInsert().
+ lexlibVecRemove().
+ lexlibVecResize().
+ lexlibVecFind().
+ lexlibVecSwap().
+ lexlibVecClear().
+ lexlibVecLen().
+ lexlibVecCap().
## 1.5.0
+ lexlibFileBytes();
+ lexlibPowu();
+ lexlibColor16Blend();
+ lexlibImagePixelSet();
+ lexlibImagePixelGet();
+ lexlibImagePixel16Set();
+ lexlibImagePixel16Get();
+ lexlibImageProfileChange();
+ lexlibImageLoadBmp();
+ lexlibImageSaveBmp();
+ lexlibImageSaveBmpEx();
+ LexlibImage.data is officially native to the machine endianness.
+ fixed strPath buffer overflows.
+ fixed imageFlip X buffer overflow.
+ fixed linkedList memleaks.
## 1.4.0
+ function lexlibStrCopy().
+ removed path.h from default includes.
+ renamed LEXLIB_C_EXTERN to LEXLIB_EXTERN.
+ functions lexlibClamp().
+ struct LexlibColor8.
+ struct LexlibColor16.
+ struct LexlibColorFtl.
+ functions lexlibColorBlend().
+ functions lexlibColorGray().
+ functions lexlibColorPremultiply().
+ functions lexlibColorTo8().
+ functions lexlibColorTo16().
+ functions lexlibColorToFlt().
+ function lexlibColorFltClamp().
## 1.3.1
+ deprecation attribute.
+ removed PKGBUILD from package.
+ fixed a scope problem with clang.
## 1.3.0
+ LexlibImage.
+ support for loading and saving pngs.
+ lexlibStrPath.
+ LexlibPath is deprecated in favor of lexlibStrPath.
+ changed all _Bool for uint8_t.
## 1.2.0
+ lexlibRandom(), gets a secure random number.
## For the full Changelog check CHANGELOG.md at the project root.