#summary API design issues #labels Phase-Design == General Issues == * does nvtt have state? should we have a context? Don't use globals/statics. == !InputOptions == * ~~Default mipmap filter should be Box instead of Kaiser.~~ (Fixed) * Remove `Format_LATC`, stop adding more aliases. === Alpha transparency === * `alphaTransparency` should not be specified in setFormat. * Add `setAlphaMode(AlphaMode mode)` Where `AlphaMode` could be: * !AlphaMode_None * !AlphaMode_Transparency * !AlphaMode_Premultiplied None is the default (treats alpha as a regular channel) while Transparency and Premultiplied are hints. Currently there are some compressors that only support None, others that only support Transparency. === Mipmapping options === ~~Option 1:~~ * Deprecate setMipmapping. * Add `setMipmapFilter(MipmapFilter filter)` * ~~Add maxLevel argument to `setTextureLayout`~~ * To disable mipmap output set maxLevel = 0. Option 2: * Deprecate setMipmapping. * Add `setMipmapFilter(MipmapFilter filter)` * Add `enableMipmaps(bool enable)` * Add `setMipmapMaxLevel(int maxLevel)` Option 3: * Add `setMipmapFilter(MipmapFilter filter)` * Remove filter argument from `setMipmapping`: `setMipmapping(bool enabled, int maxLevel)` Option 4: * Leave things as is. == !CompressionOptions == * `enableHardwareCompressor`, should be called `enableCudaCompressor` or `enableGpuCompressor`. * `Quantization` should be a compression option. * remove error threshold from setQuality, it's not used. * `setColorWeights` should take an alpha weight, not used right now, but useful for future formats. == !OutputOptions == * Should be a pimpl like `InputOptions` and `CompressionOptions`. Member attributes should be hidden. * Add `setFileName()` member to output dds file directly instead of using output handler. === Output Handling === * `OutputHandler::writeData` should return false to signal a write error and stop processing. * The `mipmap` method of `OutputHandler` should have been called `image` or `beginImage`. === Error Handling === * !Error_Unknown should be 0 * !Error_UserInterruption is not being used and could be removed.