-
Notifications
You must be signed in to change notification settings - Fork 170
Boost.GIL 3 Ideas
- Draft under heavy brainstorm
- Accepted ideas are submitted as issues/PRs to Boost.GIL 3 project.
- Good outline of the C++11 Metaprogramming by Peter Dimov - Part 1 and Part 2
- Use Boost.Hana for metaprogramming, defining types like pixel, color spaces, etc.
- make use of c++11 features, like delegating constructor
- using variadic templates will help
- make use of overlapping functionality with boost::geometry, like point type registration. See Andrew Hundt's email from 2013/03/13
- pixel should have a begin() and end() members.
- make Alignment a template parameter for image class
use boost::fusion for defining pixel and color spaces. See emails
- Restructure into folders and make flat files shorter, manageable. See toolbox extension
- Careful about files reaming (see https://svn.boost.org/trac10/wiki/Guidelines/MaintenanceGuidelines)
- Structure (prose, API reference)
Interesting Q&A on Boost mailing list, StackOverflow and other places as candidates for tutorials:
- Using gil with windows bitmaps
-
Array to image (also Windows bitmap)
- Array to image solution (also posted to http://esoerik.blogspot.com/2011/04/overriding-boostgils-from-rgba-color.html)
- Use OpenCV as backend?
- image class has a boolean template parameter defining wheather or not an image is planar.
- view_t is defined with view_type_from_pixel
- if planar == true then special allocate_( ... )
Designing a JPEG Decoder & Source Code
Understanding What is stored in a Canon RAW .CR2 file, How and Why
Window's Device Independent Bitmap https://msdn.microsoft.com/en-us/library/windows/desktop/dd183562(v=vs.85).aspx
- http://gdal.org is a library for raster geospatial data formats.
- GDAL support for IOv2 prototype: https://github.com/mloskot/boost-gil-workshop/tree/gil-io2-gdal/
- aka HD Photo (formerly Windows Media Photo)
- Windows native JPEG XR codec is available through the Windows Imaging Component (WIC)
- Microsoft developed as reference implementation in
jxrlib. It used to be at http://jxrlib.codeplex.com and now is community-maintained at https://github.com/4creators/jxrlib/, available also via vcpkg port.
- A Proposal to Add 2D Graphics Rendering and Display to C++
- AntiGrain
- pixman
- gegl New hardware acceleration code landed to upstream GEGL, from 03/21/2012
http://developers.slashdot.org/story/14/01/04/2115249/cairo-2d-graphics-may-become-part-of-iso-c
Lea Verou writes: To accurately convert values from RGB to CMYK and vice versa, the way Photoshop does, you need to use an ICC color profile. All the simple algorithmic solutions you'll find in the interwebs (like the one posted above) are inacurrate and produce colors that are outside the CMYK color gamut (for example they convert CMYK(100, 0, 0, 0) to rgb(0, 255, 255) which is obviously wrong since rgb(0, 255, 255) can't be reproduced with CMYK). Look into the java.awt.color.ICC_ColorSpace and java.awt.color.ICC_Profile classes for converting colors using ICC color profiles. As for the color profile files themselves, Adobe distributes them for free. (http://stackoverflow.com/questions/4858131/rgb-to-cmyk-and-back-algorithm)
web resources: http://www.color.org/faqs.xalter http://en.wikipedia.org/wiki/ICC_profile
implementations https://docs.oracle.com/javase/7/docs/api/java/awt/color/ICC_ColorSpace.html
http://en.wikipedia.org/wiki/Common_Intermediate_Format
Some Links:
- http://www.sunrayimage.com/examples.html
- http://trace.eas.asu.edu/yuv/
- http://fourcc.org/yuv.php
- http://softpixel.com/~cwright/programming/colorspace/yuv/
These ideas are old and might be obsolete.
- make sure not only integral types can the base type when creating a pixel type. See packed_pixel_t
- outsource io_new's bit_operations
- outsource io_new's io_devices
- look at the cairo proposal: https://groups.google.com/a/isocpp.org/forum/#!msg/graphics/UfvaqOyQbQ4/mv0CJS2mRtYJ with reference implementation: https://github.com/mikebmcl/N3888_RefImpl