# CSJ2K.j2k.roi.ROIDeScaler

## Content

<div class="doc-site-dotnet-api-container">



  <h1 id="CSJ2K_j2k_roi_ROIDeScaler" data-uid="CSJ2K.j2k.roi.ROIDeScaler" class="text-break">ROIDeScaler Class
</h1>
  <div class="markdown level0 summary"><p>This class takes care of the de-scaling of ROI coefficients. The de-scaler
works on a tile basis and any mask that is generated is for the current
mask only</p>
<pre><code>       &lt;p&gt;Default implementations of the methods in 'MultiResImgData' are provided
       through the 'MultiResImgDataAdapter' abstract class.&lt;/p&gt;&lt;p&gt;Sign-magnitude representation is used (instead of two's complement) for
       the output data. The most significant bit is used for the sign (0 if
       positive, 1 if negative). Then the magnitude of the quantized coefficient
       is stored in the next most significat bits. The most significant magnitude
       bit corresponds to the most significant bit-plane and so on.&lt;/p&gt;
</code></pre>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
    <div class="level1"><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.MultiResImgDataAdapter.html">MultiResImgDataAdapter</a></div>
    <div class="level2"><span class="xref">ROIDeScaler</span></div>
  </div>
  <div class="implements">
    <h5>Implements</h5>
    <div><a class="xref" href="CSJ2K.j2k.quantization.dequantizer.CBlkQuantDataSrcDec.html">CBlkQuantDataSrcDec</a></div>
    <div><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.InvWTData.html">InvWTData</a></div>
    <div><a class="xref" href="CSJ2K.j2k.wavelet.synthesis.MultiResImgData.html">MultiResImgData</a></div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="CSJ2K.j2k.roi.html">CSJ2K.j2k.roi</a></h6>
  <h6><strong>Assembly</strong>: C1.WPF.ReportViewer.4.6.2.dll</h6>
  <h5 id="CSJ2K_j2k_roi_ROIDeScaler_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public class ROIDeScaler : MultiResImgDataAdapter, CBlkQuantDataSrcDec, InvWTData, MultiResImgData</code></pre>
  </div>
  <div class="codewrapper">
    <pre><code class="lang-vbnet hljs">Public Class ROIDeScaler
    Inherits MultiResImgDataAdapter
    Implements CBlkQuantDataSrcDec, InvWTData, MultiResImgData</code></pre>
  </div>
  <h3 id="constructors">Constructors
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler__ctor_CSJ2K_j2k_quantization_dequantizer_CBlkQuantDataSrcDec_CSJ2K_j2k_roi_MaxShiftSpec_" data-uid="CSJ2K.j2k.roi.ROIDeScaler.#ctor(CSJ2K.j2k.quantization.dequantizer.CBlkQuantDataSrcDec,CSJ2K.j2k.roi.MaxShiftSpec)">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.-ctor.html#CSJ2K_j2k_roi_ROIDeScaler__ctor_CSJ2K_j2k_quantization_dequantizer_CBlkQuantDataSrcDec_CSJ2K_j2k_roi_MaxShiftSpec_">ROIDeScaler(CBlkQuantDataSrcDec, MaxShiftSpec)</a>
        </td>
        <td class="markdown level1 summary"><p>Constructor of the ROI descaler, takes EntropyDEcoder as source of data
to de-scale.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="fields">Fields
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_OPT_PREFIX" data-uid="CSJ2K.j2k.roi.ROIDeScaler.OPT_PREFIX">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.OPT_PREFIX.html">OPT_PREFIX</a>
        </td>
        <td class="markdown level1 summary"><p>The prefix for ROI decoder options: 'R'</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="properties">Properties
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_CbULX" data-uid="CSJ2K.j2k.roi.ROIDeScaler.CbULX">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.CbULX.html#CSJ2K_j2k_roi_ROIDeScaler_CbULX">CbULX</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the horizontal code-block partition origin. Allowable values
are 0 and 1, nothing else.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_CbULY" data-uid="CSJ2K.j2k.roi.ROIDeScaler.CbULY">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.CbULY.html#CSJ2K_j2k_roi_ROIDeScaler_CbULY">CbULY</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the vertical code-block partition origin. Allowable values are
0 and 1, nothing else.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_ParameterInfo" data-uid="CSJ2K.j2k.roi.ROIDeScaler.ParameterInfo">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.ParameterInfo.html#CSJ2K_j2k_roi_ROIDeScaler_ParameterInfo">ParameterInfo</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the parameters that are used in this class and implementing
classes. It returns a 2D String array. Each of the 1D arrays is for a
different option, and they have 3 elements. The first element is the
option name, the second one is the synopsis and the third one is a long
description of what the parameter is. The synopsis or description may
be 'null', in which case it is assumed that there is no synopsis or
description of the option, respectively. Null may be returned if no
options are supported.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="methods">Methods
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_createInstance_CSJ2K_j2k_quantization_dequantizer_CBlkQuantDataSrcDec_CSJ2K_j2k_util_ParameterList_CSJ2K_j2k_decoder_DecoderSpecs_" data-uid="CSJ2K.j2k.roi.ROIDeScaler.createInstance(CSJ2K.j2k.quantization.dequantizer.CBlkQuantDataSrcDec,CSJ2K.j2k.util.ParameterList,CSJ2K.j2k.decoder.DecoderSpecs)">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.createInstance.html#CSJ2K_j2k_roi_ROIDeScaler_createInstance_CSJ2K_j2k_quantization_dequantizer_CBlkQuantDataSrcDec_CSJ2K_j2k_util_ParameterList_CSJ2K_j2k_decoder_DecoderSpecs_">createInstance(CBlkQuantDataSrcDec, ParameterList, DecoderSpecs)</a>
        </td>
        <td class="markdown level1 summary"><p>Creates a ROIDeScaler object. The information needed to create the
object is the Entropy decoder used and the parameters.</p>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_getCodeBlock_System_Int32_System_Int32_System_Int32_CSJ2K_j2k_wavelet_synthesis_SubbandSyn_CSJ2K_j2k_image_DataBlk_" data-uid="CSJ2K.j2k.roi.ROIDeScaler.getCodeBlock(System.Int32,System.Int32,System.Int32,CSJ2K.j2k.wavelet.synthesis.SubbandSyn,CSJ2K.j2k.image.DataBlk)">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.getCodeBlock.html#CSJ2K_j2k_roi_ROIDeScaler_getCodeBlock_System_Int32_System_Int32_System_Int32_CSJ2K_j2k_wavelet_synthesis_SubbandSyn_CSJ2K_j2k_image_DataBlk_">getCodeBlock(int, int, int, SubbandSyn, DataBlk)</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the specified code-block in the current tile for the specified
component, as a copy (see below).</p>
<pre><code>       &lt;p&gt;The returned code-block may be progressive, which is indicated by
       the 'progressive' variable of the returned 'DataBlk' object. If a
       code-block is progressive it means that in a later request to this
       method for the same code-block it is possible to retrieve data which is
       a better approximation, since meanwhile more data to decode for the
       code-block could have been received. If the code-block is not
       progressive then later calls to this method for the same code-block
       will return the exact same data values.&lt;/p&gt;&lt;p&gt;The data returned by this method is always a copy of the internal
       data of this object, if any, and it can be modified &quot;in place&quot; without
       any problems after being returned. The 'offset' of the returned data is
       0, and the 'scanw' is the same as the code-block width. See the
       'DataBlk' class.&lt;/p&gt;&lt;p&gt;The 'ulx' and 'uly' members of the returned 'DataBlk' object contain
       the coordinates of the top-left corner of the block, with respect to
       the tile, not the subband.&lt;/p&gt;
</code></pre>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_getInternCodeBlock_System_Int32_System_Int32_System_Int32_CSJ2K_j2k_wavelet_synthesis_SubbandSyn_CSJ2K_j2k_image_DataBlk_" data-uid="CSJ2K.j2k.roi.ROIDeScaler.getInternCodeBlock(System.Int32,System.Int32,System.Int32,CSJ2K.j2k.wavelet.synthesis.SubbandSyn,CSJ2K.j2k.image.DataBlk)">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.getInternCodeBlock.html#CSJ2K_j2k_roi_ROIDeScaler_getInternCodeBlock_System_Int32_System_Int32_System_Int32_CSJ2K_j2k_wavelet_synthesis_SubbandSyn_CSJ2K_j2k_image_DataBlk_">getInternCodeBlock(int, int, int, SubbandSyn, DataBlk)</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the specified code-block in the current tile for the specified
component (as a reference or copy).</p>
<pre><code>       &lt;p&gt;The returned code-block may be progressive, which is indicated by
       the 'progressive' variable of the returned 'DataBlk' object. If a
       code-block is progressive it means that in a later request to this
       method for the same code-block it is possible to retrieve data which is
       a better approximation, since meanwhile more data to decode for the
       code-block could have been received. If the code-block is not
       progressive then later calls to this method for the same code-block
       will return the exact same data values.&lt;/p&gt;&lt;p&gt;The data returned by this method can be the data in the internal
       buffer of this object, if any, and thus can not be modified by the
       caller. The 'offset' and 'scanw' of the returned data can be
       arbitrary. See the 'DataBlk' class.&lt;/p&gt;&lt;p&gt;The 'ulx' and 'uly' members of the returned 'DataBlk' object contain
       the coordinates of the top-left corner of the block, with respect to
       the tile, not the subband.&lt;/p&gt;
</code></pre>
</td>
      </tr>
      <tr>
        <td id="CSJ2K_j2k_roi_ROIDeScaler_getSynSubbandTree_System_Int32_System_Int32_" data-uid="CSJ2K.j2k.roi.ROIDeScaler.getSynSubbandTree(System.Int32,System.Int32)">
          <a class="xref" href="CSJ2K.j2k.roi.ROIDeScaler.getSynSubbandTree.html#CSJ2K_j2k_roi_ROIDeScaler_getSynSubbandTree_System_Int32_System_Int32_">getSynSubbandTree(int, int)</a>
        </td>
        <td class="markdown level1 summary"><p>Returns the specified synthesis subband tree</p>
</td>
      </tr>
    </tbody>
  </table>

</div>
