View concepts ============= .. contents:: Table of Contents :local: .. _concept-View: View ---- Let `Vw` be a type that models :ref:`View (details) `. Then `Vw` also models :ref:`Image `. .. _concept-View-types: .. rubric:: Types Let `Vw` inherit all types defined for :ref:`Image `. .. _concept-View-expressions: .. rubric:: Expressions Let `Vw` inherit all valid expressions defined for :ref:`Image `. .. _concept-WritableView: WritableView ------------ Let `WVw` be a type that models :ref:`WritableView (details) `. Then `WVw` also models :ref:`View ` and :ref:`WritableImage `. .. _concept-WritableView-types: .. rubric:: Types Let `WVw` inherit all types defined for :ref:`View `. Let `WVw` inherit all types defined for :ref:`WritableImage `. .. _concept-WritableView-expressions: .. rubric:: Expressions Let `WVw` inherit all valid expressions defined for :ref:`View `. Let `WVw` inherit all valid expressions defined for :ref:`WritableImage `. .. _concept-FilterView: FilterView ---------- Let `(FVw, Pred)` be a couple of types that models :ref:`FilterView (details) `. Then `FVw` also models :ref:`View `. Then `Pred` also models :ref:`Predicate (fundamentals) `. .. _concept-FilterView-types: .. rubric:: Types Let `FVw` inherit all types defined for :ref:`View `. .. _concept-FilterView-expressions: .. rubric:: Expressions Let `FVw` inherit all valid expressions defined for :ref:`View `. Let : - ``pred`` be an instance of `Pred`. - ``cpix`` be an instance of `FVw::const_pixel_type`. Then we have the following valid expressions : +----------------+-------------+---------------+----------------+----------------------------+ | Expression | Return type | Pre-condition | Post-condition | Description | +================+=============+===============+================+============================+ | ``pred(cpix)`` | `bool` | none | none | Apply ``pred`` on ``cpix`` | +----------------+-------------+---------------+----------------+----------------------------+ .. _concept-WritableFilterView: WritableFilterView ------------------ Let `(WFVw, Pred)` be a couple of types that models :ref:`WritableFilterView (details) `. Then `WFVw` also models :ref:`FilterView ` and :ref:`WritableView `. Then `Pred` also models :ref:`Predicate (fundamentals) `. .. _concept-WritableFilterView-types: .. rubric:: Types Let `WFVw` inherit all types defined for :ref:`FilterView `. Let `WFVw` inherit all types defined for :ref:`WritableView `. .. _concept-WritableFilterView-expressions: .. rubric:: Expressions Let `WFVw` inherit all valid expressions defined for :ref:`FilterView `. Let `WFVw` inherit all valid expressions defined for :ref:`WritableView `. Let : - ``pred`` be an instance of `Pred`. - ``pix`` be an instance of `WFVw::pixel_type`. Then we have the following valid expressions : +---------------+-------------+---------------+----------------+---------------------------+ | Expression | Return type | Pre-condition | Post-condition | Description | +===============+=============+===============+================+===========================+ | ``pred(pix)`` | `bool` | none | none | Apply ``pred`` on ``pix`` | +---------------+-------------+---------------+----------------+---------------------------+ .. _concept-TransformView: TransformView ------------- Let `(TVw, Func)` be a couple of types that models :ref:`TransformView (details) `. Then `TVw` also models :ref:`View `. Then `Func` also models :ref:`Invocable (fundamentals) `. .. _concept-TransformView-types: .. rubric:: Types Let `TVw` inherit all types defined for :ref:`View `. .. _concept-TransformView-expressions: .. rubric:: Expressions Let `TVw` inherit all valid expressions defined for :ref:`View `. Let : - ``func`` be an instance of `Func`. - ``cpix`` be an instance of `TVw::const_pixel_type`. Then we have the following valid expressions : +----------------+--------------------------------+---------------+----------------+-----------------------------------------------------------------------+ | Expression | Return type | Pre-condition | Post-condition | Description | +================+================================+===============+================+=======================================================================+ | ``func(cpix)`` | `/* Implementation defined */` | none | none | Return type models :ref:`TransformedPixel ` | +----------------+--------------------------------+---------------+----------------+-----------------------------------------------------------------------+ .. _concept-WritableTransformView: WritableTransformView --------------------- Let `(WTVw, Func, FuncInverse)` be a triplet of types that models :ref:`WritableTransformView (details) `. Then `(WTVw, Func)` also models :ref:`TransformView `. Then `WTVw` also models :ref:`WritableView `. Then `FuncInverse` also models :ref:`Invocable (fundamentals) `. .. _concept-WritableTransformView-types: .. rubric:: Types Let `(WTVw, Func)` inherit all types defined for :ref:`TransformView `. Let `WTVw` inherit all types defined for :ref:`WritableView `. .. _concept-WritableTransformView-expressions: .. rubric:: Expressions Let `(WTVw, Func)` inherit all valid expressions defined for :ref:`TransformView `. Let `WTVw` inherit all valid expressions defined for :ref:`WritableView `. Let : - ``func`` be an instance of `Func`. - ``func_inverse`` be an instance of `FuncInverse`. - ``pix`` be an instance of `WTVw::pixel_type`. Then we have the following valid expressions : +-----------------------------+--------------------------------+---------------+----------------+-----------------------------------------------------------------------+ | Expression | Return type | Pre-condition | Post-condition | Description | +=============================+================================+===============+================+=======================================================================+ | ``func(pix)`` | `/* Implementation defined */` | none | none | Return type models :ref:`TransformedPixel ` | +-----------------------------+--------------------------------+---------------+----------------+-----------------------------------------------------------------------+ | ``func_inverse(func(pix))`` | `WTVw::pixel_type` | none | none | Return type models :ref:`Pixel ` | +-----------------------------+--------------------------------+---------------+----------------+-----------------------------------------------------------------------+ .. _concept-ProjectorView: ProjectorView ------------- Let `(PVw, Proj)` be a couple of types that models :ref:`ProjectorView (details) `. Then `PVw` also models :ref:`View `. Then `Proj` also models :ref:`Invocable (fundamentals) `. .. _concept-ProjectorView-types: .. rubric:: Types Let `PVw` inherit all types defined for :ref:`View `. .. _concept-ProjectorView-expressions: .. rubric:: Expressions Let `PVw` inherit all valid expressions defined for :ref:`View `. Let : - ``proj`` be an instance of `Proj`. - ``cpix`` be an instance of `PVw::const_pixel_type`. Then we have the following valid expressions : +----------------+--------------------------------+---------------+----------------+-------------------------------------------------------------------+ | Expression | Return type | Pre-condition | Post-condition | Description | +================+================================+===============+================+===================================================================+ | ``proj(cpix)`` | `/* Implementation defined */` | none | none | Return type models :ref:`ProjectedPixel ` | +----------------+--------------------------------+---------------+----------------+-------------------------------------------------------------------+ .. _concept-WritableProjectorView: WritableProjectorView --------------------- Let `(WPVw, Proj)` be a triplet of types that models :ref:`WritableProjectorView (details) `. Then `(WPVw, Proj)` also models :ref:`ProjectorView `. Then `WPVw` also models :ref:`WritableView `. .. _concept-WritableProjectorView-types: .. rubric:: Types Let `(WPVw, Proj)` inherit all types defined for :ref:`ProjectorView `. Let `WPVw` inherit all types defined for :ref:`WritableView `. .. _concept-WritableProjectorView-expressions: .. rubric:: Expressions Let `(WPVw, Proj)` inherit all valid expressions defined for :ref:`ProjectorView `. Let `WPVw` inherit all valid expressions defined for :ref:`WritableView `. Let : - ``proj`` be an instance of `Proj`. - ``pix`` be an instance of `WPVw::pixel_type`. Then we have the following valid expressions : +---------------+-------------------------------+---------------+----------------+-------------------------------------------------------------------+ | Expression | Return type | Pre-condition | Post-condition | Description | +===============+===============================+===============+================+===================================================================+ | ``proj(pix)`` | `/* implementaion defined */` | none | none | Return type models :ref:`ProjectedPixel ` | +---------------+-------------------------------+---------------+----------------+-------------------------------------------------------------------+ .. _concept-ZipView: ZipView ------- Let `(ZVw, FromVws...)` be a couple of types that models :ref:`ProjectorView (details) `. Then `ZVw` also models :ref:`View `. Then `FromVws...` also model :ref:`View `. .. _concept-ZipView-types: .. rubric:: Types Let `ZVw` inherit all types defined for :ref:`View `. Then we can define : +-------------------------+-----------------+--------------------------------------------------------+ | Definition | Description | Requirement | +=========================+=================+========================================================+ | `ZVw::const_pixel_type` | type of a pixel | models :ref:`ZippedPixel ` concept | +-------------------------+-----------------+--------------------------------------------------------+ .. _concept-ZipView-expressions: .. rubric:: Expressions Let `ZVw` inherit all valid expressions defined for :ref:`View `. .. _concept-WritableZipView: WritableZipView --------------- Let `(WZVw, FromVws...)` be a triplet of types that models :ref:`WritableZipView (details) `. Then `(WZVw, FromVws...)` also models :ref:`ZipView `. Then `WZVw` also models :ref:`WritableView `. .. _concept-WritableZipView-types: .. rubric:: Types Let `(WZVw, FromVws...)` inherit all types defined for :ref:`ZipView `. Let `WZVw` inherit all types defined for :ref:`WritableView `. Then we can define : +--------------------+-----------------+--------------------------------------------------------+ | Definition | Description | Requirement | +====================+=================+========================================================+ | `WZVw::pixel_type` | type of a pixel | models :ref:`ZippedPixel ` concept | +--------------------+-----------------+--------------------------------------------------------+ .. _concept-WritableZipView-expressions: .. rubric:: Expressions Let `(WZVw, FromVws...)` inherit all valid expressions defined for :ref:`ZipView `. Let `WZVw` inherit all valid expressions defined for :ref:`WritableView `.