Giter VIP home page Giter VIP logo

Comments (1)

maxderhak avatar maxderhak commented on July 18, 2024

Sorry I didn't have time during my previous post to type up more detailed feedback.
I think the library can be significantly simplified.

There is too much overloading of classes with unnecessary class overloads and interfaces.
Overloaded classes is good, but there's too much of everything. Eg. all the CIccCurve overloads
including CIccTagParametricCurve, CIccTagCurve ...etc can all just be munged into one bigger
CIccCurve function for code simplicity.

There is very little explanation of the spec itself; this would be invaluable in a reference
implementation of a standard file format, which is the stated purpose of this repository. Most
of the docs are just "process comments" such as "Purpose: The parametric curve type tag".
It would be most helpful to explain more useful format related things such as what this curve can
contain, what do the coefficients mean...etc. I got that from reading the code for a while, but I
feel the style of code documentation fights against me doing that

Code logic is split everywhere and needlessly convoluted. There is a lot of case-bash code: if
this or this but not this then this else that then this or this or that. I think better design
can mitigate the need for this significantly. The xform application stack code in Cmm is very
convoluted with Apply factory copies, it's very own iterator for some reason. This can be
simplified to a flat xforms[] array then xforms[n++] = MyXForm, then Cmm_Apply( xform, n ), and
the entire IccCmm class deleted.

Exposure of internal members is very inconsistent. It is of help for my usecase for a library
that can load ICC into a bunch of data structures and help me understand it and access the data.
The loading of data structures is very good here and runs fast. The accessing bit is sort of
wierd. For instance, I had to make a a hack class class MyCIccXformMatrix : public
CIccXformMatrixTRC in order to access the protected matrix. Why isn't there a GetMatrix that's
public here?

There is case-bash logic everywhere, with little clarification or justification. If dest space is
this, and there's this other tag, why do I have to set this pointer to some random other tag?
Please point to the ICC file format spec that raises the need for this?

Hope this helps, and thanks for the library!

Originally posted by @hypernewbie in #12 (comment) #issuecomment-386181591

from demoiccmax.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.