November 28, 2020, 10:05:49 AM

Author Topic: [bmx] Trim Pixmap (trim away alpha channel) by shinkiro1 [ 1+ years ago ]  (Read 797 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Trim Pixmap (trim away alpha channel)
Author : shinkiro1
Posted : 1+ years ago

Description : This function will return a pixmap that has been trimmed to keep the filesize small. Note that it's not optimized and wasn't tested for real-time purposes.

Code :
Code: BlitzMax
  1. Function TrimPixmap:TPixmap( pixmap:TPixmap )
  2.         Local x:Int
  3.         Local y:Int
  4.         Local pixLeft:Int = pixmap.width
  5.         Local pixRight:Int = 0
  6.         Local pixTop:Int = pixmap.height
  7.         Local pixBottom:Int = 0
  8.         'Top -> Down
  9.         For x = 0 Until pixmap.width
  10.                 For y = 0 Until pixmap.height
  11.                         If pixmap.ReadPixel( x, y ) Shr 24 & $000000FF > 0
  12.                                 If y < pixTop Then
  13.                                         pixTop = y
  14.                                 EndIf
  15.                         EndIf
  16.                 Next
  17.         Next
  18.         'Down -> Top
  19.         For x = 0 Until pixmap.width
  20.                 For y = pixmap.height-1 To 0 Step -1
  21.                         If pixmap.ReadPixel( x, y ) Shr 24 & $000000FF > 0
  22.                                 If y > pixBottom Then
  23.                                         pixBottom = y
  24.                                 EndIf
  25.                         EndIf
  26.                 Next
  27.         Next
  28.         'Left -> Right
  29.         For x = 0 Until pixmap.width
  30.                 For y = 0 Until pixmap.height
  31.                         If pixmap.ReadPixel( x, y ) Shr 24 & $000000FF > 0
  32.                                 If x < pixLeft Then
  33.                                         pixLeft = x
  34.                                 EndIf
  35.                         EndIf
  36.                 Next
  37.         Next
  38.         'Right -> Left
  39.         For x = 0 Until pixmap.width
  40.                 For y = pixmap.height-1 To 0 Step -1
  41.                         If pixmap.ReadPixel( x, y ) Shr 24 & $000000FF > 0
  42.                                 If x > pixRight Then
  43.                                         pixRight = x
  44.                                 EndIf
  45.                         EndIf
  46.                 Next
  47.         Next
  48.         Return PixmapWindow( pixmap, pixLeft, pixTop, pixRight - pixLeft, pixBottom-pixTop )
  49. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal