FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Gradient Colors
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Gradient Colors
Posted: Sat Aug 31, 2024 05:02 PM
Hi,

There is a .png file - a gradient of some color (for example, red)
https://cloud.mail.ru/public/NipP/v5trqrynQ

Is it possible to get a list of colors from this file (from left to right) ?
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Gradient Colors
Posted: Sun Sep 01, 2024 03:06 PM
Maybe,

https://encycolorpedia.pt/ff0000

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Re: Gradient Colors
Posted: Sun Sep 01, 2024 06:30 PM
I've seen it all. But I haven't figured out how to use it. The only thing that comes to mind is to open bitmap's gradients in XImage and read the pixel colors from DC. Save the results to the database :shock:
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 04:50 AM
Code (fw): Select all Collapse
function ImagePixels()

   local hBmp  := FW_ReadImage( nil, "https://thumb.cloud.mail.ru/weblink/thumb/xw1/NipP/v5trqrynQ" )[ 1 ]
   local aClrs

   aClrs := ReadBmpPixels( hBmp )
   DeleteObject( hBmp )

   XBROWSER aClrs SHOW SLNUM

return nil

static function ReadBmpPixels( hBmp )

   local hBmpOld, hDC0, hDC
   local nBmpWidth  := nBmpWidth( hBmp )
   local nBmpHeight := nBmpHeight( hBmp )
   local nRow, nCol, nClr, aCol
   local aClrs := {}

   hDC0     := GetDC(  0 )
   hDC      := CreateCompatibleDC( HDC0 )
   hBmpOld  := SelectObject( hDC, hBmp )

   nRow     := 3 // can be any
   AAdd( aClrs,  aCol := { 1, 1, nClr := GetPixel( hDC, 1, 1 ), cClrToCode( nClr ) } )
   for nCol := 2 to nBmpWidth - 1
      nClr     := GetPixel( hDC, nCol, nRow )
      if nClr == aCol[ 3 ]
         aCol[ 2 ] := nCol
      else
         aCol  := { nCol, nCol, nClr, cClrToCode( nClr ) }
         AAdd( aClrs, aCol )
      endif
   next nCol

   SelectObject( hDC, hBmpOld )
   Deletedc( hdc )
   ReleaseDC( 0, hDC0 )

return aClrs
Regards



G. N. Rao.

Hyderabad, India
Posts: 1392
Joined: Mon May 14, 2007 09:49 AM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 07:21 AM

Thank you, Rao!

Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 02:34 PM
hi,
i got this Error
Imgpixel.prg(9) Error E0030 Syntax error "syntax error at 'ACLRS'"
what i´m doing wrong :?:
greeting,

Jimmy
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 02:43 PM
Jimmy wrote:hi,
i got this Error
Imgpixel.prg(9) Error E0030 Syntax error "syntax error at 'ACLRS'"
what i´m doing wrong :?:
Code (fw): Select all Collapse
#include "FiveWin.ch"

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 03:07 PM

Master Nages, how do I record in a .TXT or .DBF?

Maestro Nages, ¿cómo grabo en un .TXT o .DBF?

Gracias, tks.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 06:29 PM
Are you asking how to store an array as text in a txt file or dbf?
Code (fw): Select all Collapse
MEMOWRIT( cFileTxt, FW_ValToExp( aAnyArrayData ) )
// later
cText := MEMOREAD( cFileTxt )
aArray := &c   // or &(c)
Regards



G. N. Rao.

Hyderabad, India
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 07:06 PM
Thanks/Gracias Master Nages.
Code (fw): Select all Collapse
#include "FiveWin.ch"

FUNCTION ImagePixels()

   LOCAL hBmp := FW_ReadImage( NIL, "https://thumb.cloud.mail.ru/weblink/thumb/xw1/NipP/v5trqrynQ" )[ 1 ]
   LOCAL aClrs, cFileTxt := "NAGES.TXT", cTxt, cText

   aClrs := ReadBmpPixels( hBmp )

   DeleteObject( hBmp )

   XBROWSER aClrs SHOW SLNUM

   cTxt := {aClrs}

   MEMOWRIT( cFileTxt, FW_ValToExp( cTxt ) )

   WinExec( "Notepad.exe " + cFileTxt )

RETURN NIL

STATIC FUNCTION ReadBmpPixels( hBmp )

   LOCAL hBmpOld, hDC0, hDC
   LOCAL nBmpWidth  := nBmpWidth( hBmp )
   LOCAL nBmpHeight := nBmpHeight( hBmp )
   LOCAL nRow, nCol, nClr, aCol
   LOCAL aClrs := {}

   hDC0    := GetDC(  0 )
   hDC     := CreateCompatibleDC( HDC0 )
   hBmpOld := SelectObject( hDC, hBmp )

   nRow    := 3 // can be any

   AAdd( aClrs,  aCol := { 1, 1, nClr := GetPixel( hDC, 1, 1 ), cClrToCode( nClr ) } )

   FOR nCol := 2 TO nBmpWidth - 1

      nClr     := GetPixel( hDC, nCol, nRow )

      IF nClr == aCol[ 3 ]

         aCol[ 2 ] := nCol

      ELSE

         aCol  := { nCol, nCol, nClr, cClrToCode( nClr ) }

         AAdd( aClrs, aCol )

      ENDIF

   NEXT nCol

   SelectObject( hDC, hBmpOld )

   Deletedc( hdc )
   ReleaseDC( 0, hDC0 )

RETURN aClrs

// FIN / END
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Gradient Colors
Posted: Mon Sep 02, 2024 09:08 PM
Code (fw): Select all Collapse
  cTxt := {aClrs}

   MEMOWRIT( cFileTxt, FW_ValToExp( cTxt ) )
is not correct:

This is correct:
Code (fw): Select all Collapse
MEMOWRIT( cFileTxt, FW_ValToExp( aClrs ) )
Regards



G. N. Rao.

Hyderabad, India

Continue the discussion