Package com.lightcrafts.mediax.jai

Examples of com.lightcrafts.mediax.jai.InterpolationTable


    protected void computeRect(Raster[] sources,
                               WritableRaster dest,
                               Rectangle destRect) {

  // Cast the Interpolation object to InterpolationTable object
  InterpolationTable jtable = (InterpolationTable)interp;

  // The Medialib InterpolationTable class equivalent
  mediaLibImageInterpTable mlibInterpTable;

  Raster source = sources[0];
  Rectangle srcRect = source.getBounds();
 
        int formatTag = MediaLibAccessor.findCompatibleTag(sources, dest);

        MediaLibAccessor srcAccessor = new MediaLibAccessor(source, srcRect,
                  formatTag);
        MediaLibAccessor dstAccessor = new MediaLibAccessor(dest, destRect,
                  formatTag);

  // Get the floating point scale factors
  float mlibScaleX = (float)scaleXRationalNum / (float)scaleXRationalDenom;
  float mlibScaleY = (float)scaleYRationalNum / (float)scaleYRationalDenom;

        // Translation to be specified to Medialib. Note that we have to
  // specify an additional translation since all images are 0 based
  // in Medialib.

  // Calculate intermediate values.
  float tempDX = (float)(srcRect.x * scaleXRationalNum) /
      (float)scaleXRationalDenom;
  float tempDY = (float)(srcRect.y * scaleYRationalNum) /
      (float)scaleYRationalDenom;

        float tx = transX - destRect.x + tempDX;
        float ty = transY - destRect.y + tempDY;

  mediaLibImage srcML[], dstML[];
 
        switch (dstAccessor.getDataType()) {
        case DataBuffer.TYPE_BYTE:
        case DataBuffer.TYPE_USHORT:
        case DataBuffer.TYPE_SHORT:
        case DataBuffer.TYPE_INT:

      mlibInterpTable =
    new mediaLibImageInterpTable(Constants.MLIB_INT,
               jtable.getWidth(),
               jtable.getHeight(),
               jtable.getLeftPadding(),
               jtable.getTopPadding(),
               jtable.getSubsampleBitsH(),
               jtable.getSubsampleBitsV(),
               jtable.getPrecisionBits(),
               jtable.getHorizontalTableData(),
               jtable.getVerticalTableData());

            srcML = srcAccessor.getMediaLibImages();
            dstML = dstAccessor.getMediaLibImages();
            for (int i = 0 ; i < dstML.length; i++) {
    Image.ZoomTranslateTable(dstML[i], srcML[i],
               (double)mlibScaleX,
               (double)mlibScaleY,
               (double)tx, (double)ty,
               mlibInterpTable,
               Constants.MLIB_EDGE_DST_NO_WRITE);
                MlibUtils.clampImage(dstML[i], getColorModel());
            }
            break;

        case DataBuffer.TYPE_FLOAT:

      mlibInterpTable =
    new mediaLibImageInterpTable(
              Constants.MLIB_FLOAT,
              jtable.getWidth(),
              jtable.getHeight(),
              jtable.getLeftPadding(),
              jtable.getTopPadding(),
              jtable.getSubsampleBitsH(),
              jtable.getSubsampleBitsV(),
              jtable.getPrecisionBits(),
              jtable.getHorizontalTableDataFloat(),
              jtable.getVerticalTableDataFloat());
     
      srcML = srcAccessor.getMediaLibImages();
            dstML = dstAccessor.getMediaLibImages();
            for (int i = 0 ; i < dstML.length; i++) {
    Image.ZoomTranslateTable_Fp(dstML[i], srcML[i],
                  (double)mlibScaleX,
                  (double)mlibScaleY,
                  (double)tx,
                  (double)ty,
                  mlibInterpTable,
                  Constants.MLIB_EDGE_DST_NO_WRITE);
            }
            break;

        case DataBuffer.TYPE_DOUBLE:

      mlibInterpTable =
    new mediaLibImageInterpTable(
             Constants.MLIB_DOUBLE,
             jtable.getWidth(),
             jtable.getHeight(),
             jtable.getLeftPadding(),
             jtable.getTopPadding(),
             jtable.getSubsampleBitsH(),
             jtable.getSubsampleBitsV(),
             jtable.getPrecisionBits(),
             jtable.getHorizontalTableDataDouble(),
             jtable.getVerticalTableDataDouble());

      srcML = srcAccessor.getMediaLibImages();
            dstML = dstAccessor.getMediaLibImages();
            for (int i = 0 ; i < dstML.length; i++) {
    Image.ZoomTranslateTable_Fp(dstML[i], srcML[i],
View Full Code Here


        case DataBuffer.TYPE_BYTE:
        case DataBuffer.TYPE_USHORT:
        case DataBuffer.TYPE_SHORT:
        case DataBuffer.TYPE_INT:
       if (mlibInterpTableI==null){
          InterpolationTable jtable = (InterpolationTable)interp;
          mlibInterpTableI =
      new mediaLibImageInterpTable(Constants.MLIB_INT,
                 jtable.getWidth(),
                 jtable.getHeight(),
                 jtable.getLeftPadding(),
                 jtable.getTopPadding(),
                 jtable.getSubsampleBitsH(),
                 jtable.getSubsampleBitsV(),
                 jtable.getPrecisionBits(),
                 jtable.getHorizontalTableData(),
                 jtable.getVerticalTableData());

      }

            if (setBackground)
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.PolynomialWarpTable2(dstMLI[i], srcMLI[i],
                                               xCoeffs, yCoeffs,
                                               destRect.x,
                                               destRect.y,
                                               source.getMinX(),
                                               source.getMinY(),
                                               preScaleX, preScaleY,
                                               postScaleX, postScaleY,
                                               mlibInterpTableI,
                                               Constants.MLIB_EDGE_DST_NO_WRITE,
                                               intBackgroundValues);
                }
            else
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.PolynomialWarpTable(dstMLI[i], srcMLI[i],
                                              xCoeffs, yCoeffs,
                                              destRect.x,
                                              destRect.y,
                                              source.getMinX(),
                                              source.getMinY(),
                                              preScaleX, preScaleY,
                                              postScaleX, postScaleY,
                                              mlibInterpTableI,
                                              Constants.MLIB_EDGE_DST_NO_WRITE);
                    MlibUtils.clampImage(dstMLI[i], getColorModel());
                }
            break;

        case DataBuffer.TYPE_FLOAT:
      if (mlibInterpTableF==null){
          InterpolationTable jtable = (InterpolationTable)interp;
          mlibInterpTableF =
        new mediaLibImageInterpTable(Constants.MLIB_FLOAT,
                                             jtable.getWidth(),
                                             jtable.getHeight(),
                                             jtable.getLeftPadding(),
                                             jtable.getTopPadding(),
                                             jtable.getSubsampleBitsH(),
                                             jtable.getSubsampleBitsV(),
                                             jtable.getPrecisionBits(),
                                             jtable.getHorizontalTableDataFloat(),
                                             jtable.getVerticalTableDataFloat());

      }

            if (setBackground)
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.PolynomialWarpTable2_Fp(dstMLI[i], srcMLI[i],
                                                 xCoeffs, yCoeffs,
                                                 destRect.x,
                                                 destRect.y,
                                                 source.getMinX(),
                                                 source.getMinY(),
                                                 preScaleX, preScaleY,
                                                 postScaleX, postScaleY,
                                                 mlibInterpTableD,
                                                 Constants.MLIB_EDGE_DST_NO_WRITE,
                                                 backgroundValues);
          }
            else
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.PolynomialWarpTable_Fp(dstMLI[i], srcMLI[i],
                                                 xCoeffs, yCoeffs,
                                                 destRect.x,
                                                 destRect.y,
                                                 source.getMinX(),
                                                 source.getMinY(),
                                                 preScaleX, preScaleY,
                                                 postScaleX, postScaleY,
                                                 mlibInterpTableD,
                                                 Constants.MLIB_EDGE_DST_NO_WRITE);
          }
            break;


        case DataBuffer.TYPE_DOUBLE:
        if (mlibInterpTableD == null){
          InterpolationTable jtable = (InterpolationTable)interp;
          mlibInterpTableD =
      new mediaLibImageInterpTable(Constants.MLIB_DOUBLE,
                                             jtable.getWidth(),
                                             jtable.getHeight(),
                                             jtable.getLeftPadding(),
                                             jtable.getTopPadding(),
                                             jtable.getSubsampleBitsH(),
                                             jtable.getSubsampleBitsV(),
                                             jtable.getPrecisionBits(),
                                             jtable.getHorizontalTableDataDouble(),
                                             jtable.getVerticalTableDataDouble());
      }

            if (setBackground)
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.PolynomialWarpTable2_Fp(dstMLI[i], srcMLI[i],
View Full Code Here

        case DataBuffer.TYPE_SHORT:
        case DataBuffer.TYPE_INT:

      // computing medialibtable and calc for integral type and call
      if (mlibInterpTableI==null){
          InterpolationTable jtable = (InterpolationTable)interp;
          mlibInterpTableI =
      new mediaLibImageInterpTable(Constants.MLIB_INT,
                 jtable.getWidth(),
                 jtable.getHeight(),
                 jtable.getLeftPadding(),
                 jtable.getTopPadding(),
                 jtable.getSubsampleBitsH(),
                 jtable.getSubsampleBitsV(),
                 jtable.getPrecisionBits(),
                 jtable.getHorizontalTableData(),
                 jtable.getVerticalTableData());

      }

            if (setBackground)
          for (int i = 0 ; i < dstMLI.length; i++) {
              Image.GridWarpTable2(dstMLI[i], srcMLI[i],
           xWarpPos, yWarpPos,
                                         source.getMinX(),
                                         source.getMinY(),
                                         xStart - destRect.x,
                                         xStep, xNumCells,
                                         yStart - destRect.y,
                                         yStep, yNumCells,
                                         mlibInterpTableI,
                                         Constants.MLIB_EDGE_DST_NO_WRITE,
                                         intBackgroundValues);
          }
            else
          for (int i = 0 ; i < dstMLI.length; i++) {
              Image.GridWarpTable(dstMLI[i], srcMLI[i],
          xWarpPos, yWarpPos,
                                        source.getMinX(),
                                        source.getMinY(),
                                        xStart - destRect.x,
                                        xStep, xNumCells,
                                        yStart - destRect.y,
                                        yStep, yNumCells,
                                        mlibInterpTableI,
                                        Constants.MLIB_EDGE_DST_NO_WRITE);
                    MlibUtils.clampImage(dstMLI[i], getColorModel());
          }

            break;

        case DataBuffer.TYPE_FLOAT:
      if (mlibInterpTableF==null){
          InterpolationTable jtable = (InterpolationTable)interp;
          mlibInterpTableF =
        new mediaLibImageInterpTable(Constants.MLIB_FLOAT,
                                             jtable.getWidth(),
                                             jtable.getHeight(),
                                             jtable.getLeftPadding(),
                                             jtable.getTopPadding(),
                                             jtable.getSubsampleBitsH(),
                                             jtable.getSubsampleBitsV(),
                                             jtable.getPrecisionBits(),
                                             jtable.getHorizontalTableDataFloat(),
                                             jtable.getVerticalTableDataFloat());

      }

            if (setBackground)
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.GridWarpTable2_Fp(dstMLI[i], srcMLI[i],
                                            xWarpPos, yWarpPos,
                                            source.getMinX(),
                                            source.getMinY(),
                                            xStart - destRect.x,
                                            xStep, xNumCells,
                                            yStart - destRect.y,
                                            yStep, yNumCells,
                                            mlibInterpTableF,
                                            Constants.MLIB_EDGE_DST_NO_WRITE,
                                            backgroundValues);
                }
            else
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.GridWarpTable_Fp(dstMLI[i], srcMLI[i],
                                           xWarpPos, yWarpPos,
                                           source.getMinX(),
                                           source.getMinY(),
                                           xStart - destRect.x,
                                           xStep, xNumCells,
                                           yStart - destRect.y,
                                           yStep, yNumCells,
                                           mlibInterpTableF,
                                           Constants.MLIB_EDGE_DST_NO_WRITE);
                }
            break;

        case DataBuffer.TYPE_DOUBLE:
        if (mlibInterpTableD == null){
          InterpolationTable jtable = (InterpolationTable)interp;
          mlibInterpTableD =
      new mediaLibImageInterpTable(Constants.MLIB_DOUBLE,
                                             jtable.getWidth(),
                                             jtable.getHeight(),
                                             jtable.getLeftPadding(),
                                             jtable.getTopPadding(),
                                             jtable.getSubsampleBitsH(),
                                             jtable.getSubsampleBitsV(),
                                             jtable.getPrecisionBits(),
                                             jtable.getHorizontalTableDataDouble(),
                                             jtable.getVerticalTableDataDouble());
      }

            if (setBackground)
                for (int i = 0 ; i < dstMLI.length; i++) {
                    Image.GridWarpTable2_Fp(dstMLI[i], srcMLI[i],
View Full Code Here

    protected void computeRect(Raster[] sources,
                               WritableRaster dest,
                               Rectangle destRect) {

        // Cast the Interpolation object to InterpolationTable object
        InterpolationTable jtable = (InterpolationTable)interp;

        // The Medialib InterpolationTable class equivalent
        mediaLibImageInterpTable mlibInterpTable;

        Raster source = sources[0];
        Rectangle srcRect = source.getBounds();

        int formatTag = MediaLibAccessor.findCompatibleTag(sources,dest);

        MediaLibAccessor srcAccessor =
            new MediaLibAccessor(source,srcRect,formatTag);
        MediaLibAccessor dstAccessor =
            new MediaLibAccessor(dest,destRect,formatTag);

        //
        // The AffineTransform needs to be readjusted as per the
        // location of the current source & destination rectangles
        //

        // Clone the global transform so as not to write to an instance
        // variable as this method may be called from different threads.
        double[] medialib_tr = (double[])this.medialib_tr.clone();

        medialib_tr[2] = m_transform[0] * srcRect.x +
            m_transform[1] * srcRect.y +
            m_transform[2] -
            destRect.x;
        medialib_tr[5] = m_transform[3] * srcRect.x +
            m_transform[4] * srcRect.y +
            m_transform[5] -
            destRect.y;

  mediaLibImage srcML[], dstML[];

        switch (dstAccessor.getDataType()) {
        case DataBuffer.TYPE_BYTE:
        case DataBuffer.TYPE_USHORT:
        case DataBuffer.TYPE_SHORT:
        case DataBuffer.TYPE_INT:
            mlibInterpTable =
                new mediaLibImageInterpTable(Constants.MLIB_INT,
                                             jtable.getWidth(),
                                             jtable.getHeight(),
                                             jtable.getLeftPadding(),
                                             jtable.getTopPadding(),
                                             jtable.getSubsampleBitsH(),
                                             jtable.getSubsampleBitsV(),
                                             jtable.getPrecisionBits(),
                                             jtable.getHorizontalTableData(),
                                             jtable.getVerticalTableData());

      srcML = srcAccessor.getMediaLibImages();
      dstML = dstAccessor.getMediaLibImages();

            if (setBackground)
                Image.AffineTable2(dstML[0],
                                   srcML[0],
                                   medialib_tr,
                                   mlibInterpTable,
                                   Constants.MLIB_EDGE_DST_NO_WRITE,
                                   intBackgroundValues);
            else
                Image.AffineTable(dstML[0],
                                  srcML[0],
                                  medialib_tr,
                                  mlibInterpTable,
                                  Constants.MLIB_EDGE_DST_NO_WRITE);
            MlibUtils.clampImage(dstML[0], getColorModel());
            break;

        case DataBuffer.TYPE_FLOAT:
             mlibInterpTable =
                new mediaLibImageInterpTable(Constants.MLIB_FLOAT,
                                             jtable.getWidth(),
                                             jtable.getHeight(),
                                             jtable.getLeftPadding(),
                                             jtable.getTopPadding(),
                                             jtable.getSubsampleBitsH(),
                                             jtable.getSubsampleBitsV(),
                                             jtable.getPrecisionBits(),
                                             jtable.getHorizontalTableDataFloat(),
                                             jtable.getVerticalTableDataFloat());

            srcML = srcAccessor.getMediaLibImages();
      dstML = dstAccessor.getMediaLibImages();

            if (setBackground)
                Image.AffineTable2_Fp(dstML[0],
                                      srcML[0],
                                      medialib_tr,
                                      mlibInterpTable,
                                      Constants.MLIB_EDGE_DST_NO_WRITE,
                                      backgroundValues);
            else
                Image.AffineTable_Fp(dstML[0],
                                     srcML[0],
                                     medialib_tr,
                                     mlibInterpTable,
                                     Constants.MLIB_EDGE_DST_NO_WRITE);
      break;

        case DataBuffer.TYPE_DOUBLE:
             mlibInterpTable =
                new mediaLibImageInterpTable(Constants.MLIB_DOUBLE,
                                             jtable.getWidth(),
                                             jtable.getHeight(),
                                             jtable.getLeftPadding(),
                                             jtable.getTopPadding(),
                                             jtable.getSubsampleBitsH(),
                                             jtable.getSubsampleBitsV(),
                                             jtable.getPrecisionBits(),
                                             jtable.getHorizontalTableDataDouble(),
                                             jtable.getVerticalTableDataDouble());

      srcML = srcAccessor.getMediaLibImages();
      dstML = dstAccessor.getMediaLibImages();

            if (setBackground)
View Full Code Here

TOP

Related Classes of com.lightcrafts.mediax.jai.InterpolationTable

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.