HMG Graph based on Bos Taurus

HMG Samples and Enhancements

Moderator: Rathinagiri

User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: HMG Graph based on Bos Taurus

Post by Rathinagiri »

Thank you for the tip Grigory Filatov. Now I will check that up!
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: HMG Graph based on Bos Taurus

Post by Rathinagiri »

Yep! With Grigory's fix, the problem is gone!

Thank you Grigory.

Claudio, can you please leave a patch?
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
gfilatov
Posts: 1067
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: HMG Graph based on Bos Taurus

Post by gfilatov »

Rathinagiri wrote:Yep! With Grigory's fix, the problem is gone!

Thank you Grigory.
Hi Rathi,

You are welcome.

FYI I've fixed the others memory leaks in the C-functions of BosTaurus library also.

It will be available at a next MiniguiEx build 8-)
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: HMG Graph based on Bos Taurus

Post by srvet_claudio »

gfilatov wrote:
mol wrote:What I need to change? Sources of Bos Taurus?
Hi Marek,

Yes, it is. :cry:

For example, there is the missed cleaning of hBrush variable in the C-function BT_DRAW_HDC_POLY :o

This function should be fixed as below

Code: Select all

HB_FUNC( BT_DRAW_HDC_POLY )
{
   HDC hDC;
   HPEN hPen;
   HBRUSH hBrush;
   HPEN   OldPen;
   HBRUSH OldBrush;
   INT nCountX, nCountY;
   COLORREF ColorLine, ColorFill;
   INT nWidthLine, nLen;
   INT nPOLY, i;
   #ifndef __MINGW_H
      POINT aPoint [2048];
   #endif

   hDC        = (HDC)      HB_PARNL  (1);
   nCountX    = (INT)      hb_parinfa(2,0);
   nCountY    = (INT)      hb_parinfa(3,0);
   ColorLine  = (COLORREF) hb_parnl  (4);
   nWidthLine = (INT)      hb_parni  (5);
   ColorFill  = (COLORREF) hb_parnl  (6);
   nPOLY      = (INT)      hb_parni  (7);

   nLen = min( nCountX, nCountY );

   if ( nLen > 0 )
   {
      #ifdef __MINGW_H
         POINT aPoint[ nLen ];
      #endif
      for ( i=0; i < nLen; i++ )
      {  aPoint[ i ].x = hb_parvni ( 2, i + 1 );
         aPoint[ i ].y = hb_parvni ( 3, i + 1 );
      }
      SaveDC(hDC);
         hPen = CreatePen(PS_SOLID, nWidthLine, ColorLine);
         OldPen = ( HPEN ) SelectObject(hDC, hPen);
         hBrush = CreateSolidBrush( ColorFill );
         OldBrush = ( HBRUSH ) SelectObject(hDC, hBrush);

         switch( nPOLY )
         {
            case BT_DRAW_POLYLINE:
               Polyline( hDC, aPoint, nLen );
               break;
            case BT_DRAW_POLYGON:
               Polygon( hDC, aPoint, nLen );
               break;
            case BT_DRAW_POLYBEZIER:
               PolyBezier( hDC, aPoint, nLen );
               break;
         }

         SelectObject( hDC, OldBrush );
         DeleteObject(hBrush);
         SelectObject( hDC, OldPen );
         DeleteObject(hPen);   
      RestoreDC(hDC, -1);
      hb_retl( TRUE );
   }
   else
      hb_retl( FALSE );
}
Please take a look for the needed additional strings
SelectObject( hDC, OldBrush );
...
SelectObject( hDC, OldPen );
There are a similar bugs with the missed SelectObject calling in the others functions also. :?

Hope that helps :idea:
Thanks Grigory !
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
User avatar
mol
Posts: 3720
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: HMG Graph based on Bos Taurus

Post by mol »

It's working good now, I think. But, I'm still trying ;-)

Many thanks, Grigorij for your help!
Post Reply