←Select platform

CalculateRegionMaximumClipSegments Method

Summary
Gets the number of elements required to hold the clip segments for any row in the region.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public int CalculateRegionMaximumClipSegments() 
@property (nonatomic, assign, readonly) NSUInteger maximumClipSegmentsForRegion 
public int calculateRegionMaximumClipSegments(); 
public: 
int CalculateRegionMaximumClipSegments();  
def CalculateRegionMaximumClipSegments(self): 

Return Value

The maximum number of segments in a row within the region.

Remarks

Use this method in conjunction with GetRegionClipSegments.

For more information, refer to Working with the Existing Region.

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Dicom; 
using Leadtools.Drawing; 
using Leadtools.Controls; 
using Leadtools.Svg; 
 
 
public void GetRegionClipSegmentsExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
   string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_GetRegionClipSegments.bmp"); 
 
   // Load the image 
   RasterImage image = codecs.Load(srcFileName); 
 
   // Add a region to the image 
   LeadRect rc = new LeadRect(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3); 
   image.AddEllipseToRegion(null, rc, RasterRegionCombineMode.Set); 
 
   // Set the pixels inside the region to black 
 
   // Get the maximum number of elements in a row, 
   // so we know how big the array of segments should be 
   int maxClipSegments = image.CalculateRegionMaximumClipSegments(); 
 
   // Get the region bounds, so we know which is the first row 
   LeadRect rgnBounds = image.GetRegionBounds(null); 
 
   // Allocate an array large enough to store the maximum number of segments. 
   int[] segmentBuffer = new int[maxClipSegments]; 
 
   // Loop through the region rows 
   for (int y = rgnBounds.Top; y < rgnBounds.Bottom; y++) 
   { 
      // Get the segments for the row 
      image.GetRegionClipSegments(y, segmentBuffer, 0); 
 
      // Do something with the pixels 
      for (int i = 0; i < maxClipSegments / 2; i++) 
      { 
         for (int j = segmentBuffer[i]; j < segmentBuffer[i + 1]; j++) 
         { 
            RasterColor clr = image.GetPixelColor(y, j); 
            clr = new RasterColor(clr.R / 2, clr.G / 2, clr.B / 2); 
            image.SetPixelColor(y, j, clr); 
         } 
      } 
   } 
 
   // Save the image back to file 
   codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24); 
 
   image.Dispose(); 
   codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.core.*; 
import leadtools.svg.*; 
import leadtools.imageprocessing.CloneCommand; 
import leadtools.imageprocessing.FillCommand; 
import leadtools.imageprocessing.FlipCommand; 
import leadtools.imageprocessing.GrayscaleCommand; 
import leadtools.imageprocessing.color.InvertCommand; 
import leadtools.imageprocessing.color.PosterizeCommand; 
 
 
public void getRegionClipSegmentsExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   RasterCodecs codecs = new RasterCodecs(); 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp"); 
   String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_GetRegionClipSegments.bmp"); 
 
   // Load the image 
   RasterImage image = codecs.load(srcFileName); 
 
   // Add a region to the image 
   LeadRect rc = new LeadRect(image.getWidth() / 3, image.getHeight() / 3, image.getWidth() / 3, 
         image.getHeight() / 3); 
   image.addEllipseToRegion(null, rc, RasterRegionCombineMode.SET); 
 
   // Set the pixels inside the region to black 
   assertTrue(rc.getLeft() == (image.getWidth() / 3)); 
 
   // Get the maximum number of elements in a row, 
   // so we know how big the array of segments should be 
   int maxClipSegments = image.calculateRegionMaximumClipSegments(); 
 
   // Get the region bounds, so we know which is the first row 
   LeadRect rgnBounds = image.getRegionBounds(null); 
 
   // Allocate an array large enough to store the maximum number of segments. 
   int[] segmentBuffer = new int[maxClipSegments]; 
 
   // Loop through the region rows 
   for (int y = rgnBounds.getTop(); y < rgnBounds.getBottom(); y++) { 
      // Get the segments for the row 
      image.getRegionClipSegments(y, segmentBuffer, 0); 
 
      // Do something with the pixels 
      for (int i = 0; i < maxClipSegments / 2; i++) { 
         for (int j = segmentBuffer[i]; j < segmentBuffer[i + 1]; j++) { 
            RasterColor clr = image.getPixelColor(y, j); 
            clr = new RasterColor(clr.r() / 2, clr.g() / 2, clr.b() / 2); 
            image.setPixelColor(y, j, clr); 
         } 
      } 
   } 
 
   // Save the image back to file 
   codecs.save(image, destFileName, RasterImageFormat.BMP, 24); 
 
   // Clean up 
   image.dispose(); 
   codecs.dispose(); 
 
   assertTrue("file unsuccessfully saved to " + destFileName, (new File(destFileName)).exists()); 
   System.out.printf("File saved successfully to %s%n", destFileName); 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.