Lines 74-79
Link Here
|
74 |
|
74 |
|
75 |
#include <dlfcn.h> |
75 |
#include <dlfcn.h> |
76 |
#include <soicon.hxx> |
76 |
#include <soicon.hxx> |
|
|
77 |
#include <salbtype.hxx> |
78 |
|
79 |
#include <svapp.hxx> |
77 |
|
80 |
|
78 |
#if OSL_DEBUG_LEVEL > 1 |
81 |
#if OSL_DEBUG_LEVEL > 1 |
79 |
#include <cstdio> |
82 |
#include <cstdio> |
Lines 519-524
Link Here
|
519 |
|
522 |
|
520 |
void GtkSalFrame::SetIcon( USHORT nIcon ) |
523 |
void GtkSalFrame::SetIcon( USHORT nIcon ) |
521 |
{ |
524 |
{ |
|
|
525 |
#if 0 |
522 |
if( m_nStyle & SAL_FRAME_STYLE_CHILD || ! m_pWindow ) |
526 |
if( m_nStyle & SAL_FRAME_STYLE_CHILD || ! m_pWindow ) |
523 |
return; |
527 |
return; |
524 |
|
528 |
|
Lines 549-554
Link Here
|
549 |
|
553 |
|
550 |
g_list_foreach( pPixbufs, (GFunc) g_object_unref, NULL ); |
554 |
g_list_foreach( pPixbufs, (GFunc) g_object_unref, NULL ); |
551 |
g_list_free( pPixbufs ); |
555 |
g_list_free( pPixbufs ); |
|
|
556 |
#endif |
557 |
} |
558 |
|
559 |
static inline BYTE * |
560 |
getRow( BitmapBuffer *pBuffer, ULONG nRow ) |
561 |
{ |
562 |
if( BMP_SCANLINE_ADJUSTMENT( pBuffer->mnFormat ) == BMP_FORMAT_TOP_DOWN ) |
563 |
return pBuffer->mpBits + nRow * pBuffer->mnScanlineSize; |
564 |
else |
565 |
return pBuffer->mpBits + ( pBuffer->mnHeight - nRow - 1 ) * pBuffer->mnScanlineSize; |
566 |
} |
567 |
|
568 |
static GdkPixbuf * |
569 |
bitmapToPixbuf( SalBitmap *pSalBitmap, SalBitmap *pSalAlpha ) |
570 |
{ |
571 |
g_return_val_if_fail( pSalBitmap != NULL, NULL ); |
572 |
g_return_val_if_fail( pSalAlpha != NULL, NULL ); |
573 |
|
574 |
BitmapBuffer *pBitmap = pSalBitmap->AcquireBuffer( TRUE ); |
575 |
g_return_val_if_fail( pBitmap != NULL, NULL ); |
576 |
g_return_val_if_fail( pBitmap->mnBitCount == 24, NULL ); |
577 |
|
578 |
BitmapBuffer *pAlpha = pSalAlpha->AcquireBuffer( TRUE ); |
579 |
g_return_val_if_fail( pAlpha != NULL, NULL ); |
580 |
g_return_val_if_fail( pAlpha->mnBitCount == 8, NULL ); |
581 |
|
582 |
Size aSize = pSalBitmap->GetSize(); |
583 |
g_return_val_if_fail( pSalAlpha->GetSize() == aSize, NULL ); |
584 |
|
585 |
ULONG nX, nY; |
586 |
guchar *pPixbufData = (guchar *)g_malloc (4 * aSize.Width() * aSize.Height() ); |
587 |
guchar *pDestData = pPixbufData; |
588 |
|
589 |
for( nY = 0; nY < pBitmap->mnHeight; nY++ ) |
590 |
{ |
591 |
BYTE *pData = getRow( pBitmap, nY ); |
592 |
BYTE *pAlphaData = getRow( pAlpha, nY ); |
593 |
|
594 |
for( nX = 0; nX < pBitmap->mnWidth; nX++ ) |
595 |
{ |
596 |
*pDestData++ = *pData++; |
597 |
*pDestData++ = *pData++; |
598 |
*pDestData++ = *pData++; |
599 |
*pDestData++ = 255 - *pAlphaData++; |
600 |
} |
601 |
} |
602 |
|
603 |
pSalBitmap->ReleaseBuffer( pBitmap, TRUE ); |
604 |
pSalAlpha->ReleaseBuffer( pAlpha, TRUE ); |
605 |
|
606 |
return gdk_pixbuf_new_from_data( pPixbufData, |
607 |
GDK_COLORSPACE_RGB, TRUE, 8, |
608 |
aSize.Width(), aSize.Height(), |
609 |
aSize.Width() * 4, |
610 |
(GdkPixbufDestroyNotify) g_free, |
611 |
NULL ); |
612 |
} |
613 |
|
614 |
void GtkSalFrame::SetIcon( std::list< SalBitmap * > &rIcons ) |
615 |
{ |
616 |
std::list< SalBitmap * >::iterator it; |
617 |
GdkPixbuf *pBuf; |
618 |
GList *pIcons = NULL; |
619 |
|
620 |
for( it = rIcons.begin(); it != rIcons.end(); it++) |
621 |
{ |
622 |
SalBitmap *pBitmap = *it; |
623 |
it++; |
624 |
SalBitmap *pAlpha = *it; |
625 |
|
626 |
if( ( pBuf = bitmapToPixbuf( pBitmap, pAlpha ) ) ) |
627 |
pIcons = g_list_prepend( pIcons, pBuf ); |
628 |
} |
629 |
|
630 |
gtk_window_set_icon_list( m_pWindow, pIcons ); |
552 |
} |
631 |
} |
553 |
|
632 |
|
554 |
void GtkSalFrame::SetMenu( SalMenu* pSalMenu ) |
633 |
void GtkSalFrame::SetMenu( SalMenu* pSalMenu ) |