News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

Third Party Libraries

Started by fearless, November 03, 2023, 09:13:39 PM

Previous topic - Next topic

fearless

#15
Mini-XML: https://www.msweet.org/mxml/

QuoteMini-XML is a tiny XML library that you can use to read and write XML and XML-like data files in your application without requiring large non-standard libraries.

Mini-XML provides the following functionality:
  • Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and strings.
  • Data is stored in a linked-list tree structure, preserving the XML data hierarchy.
  • SAX (streamed) reading of XML files and strings to minimize memory usage.
  • Supports arbitrary element names, attributes, and attribute values with no preset limits, just available memory.
  • Supports integer, real, opaque ("cdata"), and text data types in "leaf" nodes.
  • Functions for creating and managing trees of data.
  • "Find" and "walk" functions for easily locating and navigating trees of data.

fearless

#16
Jansson: http://www.digip.org/jansson/ - https://github.com/akheron/jansson

QuoteJansson is a C library for encoding, decoding and manipulating JSON data. Its main features and design principles are:

  • Simple and intuitive API and data model
  • Comprehensive documentation
  • No dependencies on other libraries
  • Full Unicode support (UTF-8)
  • Extensive test suite

fearless

#17
cJSON: https://github.com/DaveGamble/cJSON

QuoteUltralightweight JSON parser in ANSI C


NoCforMe

Request: do you by any chance have a library that can handle images (JPG, PNG, etc.)? Ideally using GDI instead of GDI+? Need to be able to open, save, display and resize images.
Assembly language programming should be fun. That's why I do it.

Biterider

Quote from: NoCforMe on November 06, 2023, 04:16:56 AMlibrary that can handle images (JPG, PNG, etc.)?
Hi
For some time now, the operating system has a component called ImgCtx. It can be interfaced via COM and it can handle (BitBlt, stretch and alpha operations) BMP, GIF, JPEG, ICO, WMF, EMF, PNG, XBM, ICO, TIFF.

Here is an example where you can check what it can do
https://github.com/ObjAsm/ObjAsm-C.2/blob/master/Projects/X/Image/ImageApp.exe

Biterider




NoCforMe

Ugh, COM. Never used it. Can you tell me, in a nutshell, what it takes to incorporate COM into a Win32 program? It seems like a big, ugly, scary interface to me.
Assembly language programming should be fun. That's why I do it.

fearless

PNGLib: https://www.madwizard.org/programming/projects/pnglib

QuoteA free PNG decoder library

This library allows you to decode and display PNG images in your applications. The library is very small and has been written in assembly (MASM32). The library supports both interlaced and non-interlaced PNGs, in all color types mentioned in the PNG specifications version 1.0. The library is easy to use, has detailed documentation. Includes and headers are supplied for use with MASM32 and Visual C.

Several code samples (MASM32 and Visual C) are included as well, one of them is the PNGview program: a 30kb PNG viewer, written in C using the PNGlib.

PNG files are designed to be patent-free, so no licenses or fees of any kind are required to use this library. The library itself is free as well, however for commercial use, please contact me first to ask permission (see the license in the documentation for more information). Usually this is no problem.


Biterider

Hi
In the internet you can find a lot of references on how to use this component.
For myself I use https://github.com/ObjAsm/ObjAsm-C.2/blob/master/Code/Objects/Image.inc

The MASM SDK defines some macros to handle COM calls (look for coinvoke) in plain MASM.

A very good intro into COM can be read here https://www.codeproject.com/Articles/13601/COM-in-plain-C

Regards, Biterider

fearless

Bzip2: https://sourceware.org/bzip2/ - https://gitlab.com/bzip2/bzip2

Quotebzip2 is a freely available, patent free (see below), high-quality data compressor. It typically compresses files to within 10% to 15% of the best available techniques (the PPM family of statistical compressors), whilst being around twice as fast at compression and six times faster at decompression.

fearless

FSE (Finite State Entropy): https://github.com/Cyan4973/FiniteStateEntropy


QuoteNew generation entropy codecs : Finite State Entropy and Huff0

This library proposes two high speed entropy coders :

Huff0, a Huffman codec designed for modern CPU, featuring OoO (Out of Order) operations on multiple ALU (Arithmetic Logic Unit), achieving extremely fast compression and decompression speeds.

FSE is a new kind of Entropy encoder, based on ANS theory, from Jarek Duda, achieving precise compression accuracy (like Arithmetic coding) at much higher speeds.

fearless

BriefLZ: https://github.com/jibsen/brieflz

QuoteBriefLZ is a small and fast open source implementation of a Lempel-Ziv style compression algorithm. The main focus is on speed and code footprint, but the ratios achieved are quite good compared to similar algorithms.

fearless

Brotli: https://github.com/google/brotli (x86)

QuoteBrotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.

fearless

Brotli: https://github.com/google/brotli (x64)

QuoteBrotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.

fearless

BZip3: https://github.com/kspalaiologos/bzip3

QuoteBZip3 - A spiritual successor to BZip2.

A better, faster and stronger spiritual successor to BZip2. Features higher compression ratios and better performance thanks to a order-0 context mixing entropy coder, a fast Burrows-Wheeler transform code making use of suffix arrays and a RLE with Lempel Ziv+Prediction pass based on LZ77-style string matching and PPM-style context modeling.

fearless

FastLZ: https://github.com/ariya/FastLZ

QuoteSmall & portable byte-aligned LZ77 compression.

FastLZ (MIT license) is an ANSI C/C90 implementation of Lempel-Ziv 77 algorithm (LZ77) of lossless data compression. It is suitable to compress series of text/paragraphs, sequences of raw pixel data, or any other blocks of data with lots of repetition. It is not intended to be used on images, videos, and other formats of data typically already in an optimal compressed form.

The focus for FastLZ is a very fast compression and decompression, doing that at the cost of the compression ratio.