1. fixed Maximise() mismatch between wxFrame and wxMDIFrame

2. tried (unsuccessfully) to fix the warning in pnghand.cpp
3. fixes for VC and BCC makefiles generation with tmake (still untested)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3021 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 1999-07-16 23:06:35 +00:00
parent de844935b6
commit 9b73db3c34
9 changed files with 201 additions and 130 deletions

View File

@ -28,8 +28,11 @@
#! needs extra files (sql*.h) so not compiled by default.
next if $file =~ /^odbc\./;
$isCFile = $file =~ /\.c$/;
$file =~ s/cp?p?$/obj/;
$project{"WXCOMMONOBJS"} .= "\$(MSWDIR)\\" . $file . " "
$obj = "\$(MSWDIR)\\" . $file . " ";
$project{"WXCOMMONOBJS"} .= $obj;
$project{"WXCOBJS"} .= $obj if $isCFile;
}
#! special hack for Borland in 16 bits needs this file
@ -172,8 +175,9 @@ $(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c
my @objs = split;
foreach (@objs) {
$text .= $_ . ": ";
$suffix = $project{"WXCOBJS"} =~ /\Q$_/ ? "c" : '$(SRCSUFF)';
s/MSWDIR/COMMDIR/;
s/obj/\$(SRCSUFF)/;
s/obj/$suffix/;
$text .= $_ . "\n\n";
}
#$}

View File

@ -9,8 +9,6 @@
#${
open(FILELIST, "filelist.txt") or die "Can't open filelist file: $!\n";
my %wxfiles;
line: while ( defined($_ = <FILELIST>) ) {
chomp;

View File

@ -185,7 +185,7 @@ metafile.cpp M
minifram.cpp M
msgdlg.cpp M
nativdlg.cpp M
notebook.cpp M
notebook.cpp M 32
oleutils.cpp M O
ownerdrw.cpp M
palette.cpp M

View File

@ -102,6 +102,11 @@ $(CPPFLAGS) /Fo$@ /c /Tp $<
$(CPPFLAGS) /Fo$@ /c /Tp $<
<<
{..\common}.c{..\common\$D}.obj:
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tc $<
<<
{..\msw}.cpp{..\msw\$D}.obj:
cl @<<
$(CPPFLAGS) /Fo$@ /c /Tp $<

View File

@ -143,7 +143,7 @@ public:
const wxString& name = wxFrameNameStr);
// MDI operations
virtual void Maximize();
virtual void Maximize(bool maximize = TRUE);
virtual void Restore();
virtual void Activate();

View File

@ -105,7 +105,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Minimal_Quit, MyFrame::OnQuit)
EVT_MENU(Minimal_About, MyFrame::OnAbout)
EVT_BUTTON(-1, MyFrame::OnTest)
EVT_MENU(Minimal_Test, MyFrame::OnTest)
EVT_PAINT(MyFrame::OnPaint)
END_EVENT_TABLE()
@ -159,6 +159,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
wxMenu *menuFile = new wxMenu(wxMENU_TEAROFF);
menuFile->Append(Minimal_About, "&About...\tCtrl-A", "Show about dialog");
menuFile->Append(Minimal_Test, "&Test...\tCtrl-T", "Test");
menuFile->AppendSeparator();
menuFile->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program");
@ -202,8 +203,52 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
wxMessageBox(msg, "About Minimal", wxOK | wxICON_INFORMATION, this);
}
struct Foo
{
Foo(int n_) { n = n_; }
int n;
};
WX_DECLARE_LIST(Foo, FooList);
#include <wx/listimpl.cpp>
WX_DEFINE_LIST(FooList);
int FooSort(const Foo **item1, const Foo **item2)
{
return (*item2)->n - (*item1)->n;
}
void ShowList(const FooList& list)
{
wxString msg, str;
msg = "The list elements: (";
for ( FooList::Node *node = list.GetFirst(); node; node = node->GetNext() )
{
if ( !!str )
msg += ", ";
str.Printf("%d", node->GetData()->n);
msg += str;
}
msg += ')';
wxMessageBox(msg, "List contents", wxOK | wxICON_INFORMATION);
}
void MyFrame::OnTest(wxCommandEvent& event)
{
FooList list;
list.Append(new Foo(12));
list.Append(new Foo(3));
list.Append(new Foo(1));
list.Append(new Foo(7));
list.Append(new Foo(4));
ShowList(list);
list.Sort(FooSort);
ShowList(list);
}
void MyFrame::OnPaint(wxPaintEvent& event)

View File

@ -1,8 +1,6 @@
# This file was automatically generated by tmake at 21:00, 1999/07/14
# This file was automatically generated by tmake at 01:04, 1999/07/17
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE BCC.T!
#
@ -100,7 +98,6 @@ GENERICOBJS= $(MSWDIR)\busyinfo.obj \
COMMONOBJS = \
$(MSWDIR)\y_tab.obj \
$(MSWDIR)\extended.obj \
$(MSWDIR)\cmndata.obj \
$(MSWDIR)\config.obj \
$(MSWDIR)\date.obj \
@ -114,6 +111,8 @@ COMMONOBJS = \
$(MSWDIR)\dynarray.obj \
$(MSWDIR)\dynlib.obj \
$(MSWDIR)\event.obj \
$(MSWDIR)\extended.obj \
$(MSWDIR)\ffile.obj \
$(MSWDIR)\file.obj \
$(MSWDIR)\fileconf.obj \
$(MSWDIR)\filefn.obj \
@ -146,6 +145,7 @@ COMMONOBJS = \
$(MSWDIR)\string.obj \
$(MSWDIR)\tbarbase.obj \
$(MSWDIR)\tbarsmpl.obj \
$(MSWDIR)\textcmn.obj \
$(MSWDIR)\textfile.obj \
$(MSWDIR)\time.obj \
$(MSWDIR)\timercmn.obj \
@ -212,7 +212,6 @@ MSWOBJS = $(MSWDIR)\accel.obj \
$(MSWDIR)\minifram.obj \
$(MSWDIR)\msgdlg.obj \
$(MSWDIR)\nativdlg.obj \
$(MSWDIR)\notebook.obj \
$(MSWDIR)\ownerdrw.obj \
$(MSWDIR)\palette.obj \
$(MSWDIR)\pen.obj \
@ -364,8 +363,6 @@ $(MSWDIR)\msgdlg.obj: $(MSWDIR)\msgdlg.$(SRCSUFF)
$(MSWDIR)\nativdlg.obj: $(MSWDIR)\nativdlg.$(SRCSUFF)
$(MSWDIR)\notebook.obj: $(MSWDIR)\notebook.$(SRCSUFF)
$(MSWDIR)\ownerdrw.obj: $(MSWDIR)\ownerdrw.$(SRCSUFF)
$(MSWDIR)\palette.obj: $(MSWDIR)\palette.$(SRCSUFF)
@ -451,6 +448,10 @@ $(MSWDIR)\dynlib.obj: $(COMMDIR)\dynlib.$(SRCSUFF)
$(MSWDIR)\event.obj: $(COMMDIR)\event.$(SRCSUFF)
$(MSWDIR)\extended.obj: $(COMMDIR)\extended.c
$(MSWDIR)\ffile.obj: $(COMMDIR)\ffile.$(SRCSUFF)
$(MSWDIR)\file.obj: $(COMMDIR)\file.$(SRCSUFF)
$(MSWDIR)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF)
@ -515,6 +516,8 @@ $(MSWDIR)\tbarbase.obj: $(COMMDIR)\tbarbase.$(SRCSUFF)
$(MSWDIR)\tbarsmpl.obj: $(COMMDIR)\tbarsmpl.$(SRCSUFF)
$(MSWDIR)\textcmn.obj: $(COMMDIR)\textcmn.$(SRCSUFF)
$(MSWDIR)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF)
$(MSWDIR)\time.obj: $(COMMDIR)\time.$(SRCSUFF)
@ -525,7 +528,7 @@ $(MSWDIR)\tokenzr.obj: $(COMMDIR)\tokenzr.$(SRCSUFF)
$(MSWDIR)\txtstrm.obj: $(COMMDIR)\txtstrm.$(SRCSUFF)
$(MSWDIR)\unzip.obj: $(COMMDIR)\unzip.$(SRCSUFF)
$(MSWDIR)\unzip.obj: $(COMMDIR)\unzip.c
$(MSWDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF)

View File

@ -729,25 +729,35 @@ void wxMDIChildFrame::InternalSetMenuBar()
// MDI operations
// ---------------------------------------------------------------------------
void wxMDIChildFrame::Maximize()
void wxMDIChildFrame::Maximize(bool maximize)
{
wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent();
if ( parent && parent->GetClientWindow() )
::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIMAXIMIZE, (WPARAM) GetHwnd(), 0);
{
::SendMessage(GetWinHwnd(parent->GetClientWindow()),
maximize ? WM_MDIMAXIMIZE : WM_MDIRESTORE,
(WPARAM)GetHwnd(), 0);
}
}
void wxMDIChildFrame::Restore()
{
wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent();
if ( parent && parent->GetClientWindow() )
::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIRESTORE, (WPARAM) GetHwnd(), 0);
{
::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIRESTORE,
(WPARAM) GetHwnd(), 0);
}
}
void wxMDIChildFrame::Activate()
{
wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent();
if ( parent && parent->GetClientWindow() )
::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIACTIVATE, (WPARAM) GetHwnd(), 0);
{
::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIACTIVATE,
(WPARAM) GetHwnd(), 0);
}
}
// ---------------------------------------------------------------------------

View File

@ -74,7 +74,7 @@ ima_png_error(png_struct *png_ptr, char *message)
// static wxGifReaderIter* iter;
wxPalette *wxCopyPalette(const wxPalette *cmap);
wxPNGReader::wxPNGReader(void)
wxPNGReader::wxPNGReader()
{
filetype = 0;
RawImage = NULL; // Image data
@ -265,7 +265,7 @@ void wxPNGReader::NullData()
Palette = NULL;
}
wxBitmap* wxPNGReader::GetBitmap(void)
wxBitmap* wxPNGReader::GetBitmap()
{
wxBitmap *bitmap = new wxBitmap;
if ( InstantiateBitmap(bitmap) )
@ -354,7 +354,7 @@ wxPalette *wxCopyPalette(const wxPalette *cmap)
return newCmap;
}
wxMask *wxPNGReader::CreateMask(void)
wxMask *wxPNGReader::CreateMask()
{
HBITMAP hBitmap = ::CreateBitmap(GetWidth(), GetHeight(), 1, 1, NULL);
@ -385,141 +385,147 @@ wxMask *wxPNGReader::CreateMask(void)
bool wxPNGReader::ReadFile(wxChar * ImageFileName)
{
int number_passes;
int number_passes;
if (ImageFileName)
wxStrcpy(filename, ImageFileName);
if (ImageFileName)
wxStrcpy(filename, ImageFileName);
FILE *fp;
png_struct *png_ptr;
png_info *info_ptr;
wxPNGReaderIter iter(this);
FILE *fp;
png_struct *png_ptr;
png_info *info_ptr;
/* open the file */
fp = fopen(wxConvFile.cWX2MB(filename), "rb");
if (!fp)
return FALSE;
/* open the file */
fp = fopen(wxConvFile.cWX2MB(filename), "rb");
if (!fp)
return FALSE;
/* allocate the necessary structures */
png_ptr = new (png_struct);
if (!png_ptr)
{
fclose(fp);
return FALSE;
}
info_ptr = new (png_info);
if (!info_ptr)
{
fclose(fp);
delete(png_ptr);
return FALSE;
}
/* set error handling */
if (setjmp(png_ptr->jmpbuf))
{
png_read_destroy(png_ptr, info_ptr, (png_info *)0);
fclose(fp);
delete(png_ptr);
delete(info_ptr);
/* If we get here, we had a problem reading the file */
return FALSE;
}
//png_set_error(ima_png_error, NULL);
/* initialize the structures, info first for error handling */
png_info_init(info_ptr);
png_read_init(png_ptr);
/* set up the input control */
png_init_io(png_ptr, fp);
/* read the file information */
png_read_info(png_ptr, info_ptr);
/* allocate the memory to hold the image using the fields
of png_info. */
png_color_16 my_background={ 0, 31, 127, 255, 0 };
if (info_ptr->valid & PNG_INFO_bKGD)
/* allocate the necessary structures */
png_ptr = new (png_struct);
if (!png_ptr)
{
png_set_background(png_ptr, &(info_ptr->background),
PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
fclose(fp);
return FALSE;
}
info_ptr = new (png_info);
if (!info_ptr)
{
fclose(fp);
delete(png_ptr);
return FALSE;
}
/* set error handling */
if (setjmp(png_ptr->jmpbuf))
{
png_read_destroy(png_ptr, info_ptr, (png_info *)0);
fclose(fp);
delete(png_ptr);
delete(info_ptr);
/* If we get here, we had a problem reading the file */
return FALSE;
}
//png_set_error(ima_png_error, NULL);
/* initialize the structures, info first for error handling */
png_info_init(info_ptr);
png_read_init(png_ptr);
/* set up the input control */
png_init_io(png_ptr, fp);
/* read the file information */
png_read_info(png_ptr, info_ptr);
/* allocate the memory to hold the image using the fields
of png_info. */
png_color_16 my_background={ 0, 31, 127, 255, 0 };
if (info_ptr->valid & PNG_INFO_bKGD)
{
png_set_background(png_ptr, &(info_ptr->background),
PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
if ( info_ptr->num_palette > 0 )
bgindex = info_ptr->background.index;
}
else {
png_set_background(png_ptr, &my_background,
PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
else {
png_set_background(png_ptr, &my_background,
PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
// Added by JACS: guesswork!
if ( info_ptr->num_trans != 0 )
bgindex = info_ptr->num_trans - 1 ;
}
}
/* tell libpng to strip 16 bit depth files down to 8 bits */
if (info_ptr->bit_depth == 16)
png_set_strip_16(png_ptr);
/* tell libpng to strip 16 bit depth files down to 8 bits */
if (info_ptr->bit_depth == 16)
png_set_strip_16(png_ptr);
int pixel_depth=(info_ptr->pixel_depth<24) ? info_ptr->pixel_depth: 24;
Create(info_ptr->width, info_ptr->height, pixel_depth,
info_ptr->color_type);
int pixel_depth=(info_ptr->pixel_depth<24) ? info_ptr->pixel_depth: 24;
Create(info_ptr->width, info_ptr->height, pixel_depth,
info_ptr->color_type);
if (info_ptr->num_palette>0)
if (info_ptr->num_palette>0)
{
SetPalette((int)info_ptr->num_palette, (rgb_color_struct*)info_ptr->palette);
SetPalette((int)info_ptr->num_palette, (rgb_color_struct*)info_ptr->palette);
}
int row_stride = info_ptr->width * ((pixel_depth+7)>>3);
// printf("P = %d D = %d RS= %d ", info_ptr->num_palette, info_ptr->pixel_depth,row_stride);
// printf("CT = %d TRS = %d BD= %d ", info_ptr->color_type, info_ptr->valid & PNG_INFO_tRNS,info_ptr->bit_depth);
int row_stride = info_ptr->width * ((pixel_depth+7)>>3);
// printf("P = %d D = %d RS= %d ", info_ptr->num_palette, info_ptr->pixel_depth,row_stride);
// printf("CT = %d TRS = %d BD= %d ", info_ptr->color_type, info_ptr->valid & PNG_INFO_tRNS,info_ptr->bit_depth);
byte *row_pointers = new byte[row_stride];
byte *row_pointers = new byte[row_stride];
/* turn on interlace handling */
if (info_ptr->interlace_type)
number_passes = png_set_interlace_handling(png_ptr);
else
number_passes = 1;
// printf("NP = %d ", number_passes);
for (int pass=0; pass< number_passes; pass++) {
iter.upset();
int y=0;
do {
// (unsigned char *)iter.GetRow();
if (info_ptr->interlace_type) {
if (pass>0)
iter.GetRow(row_pointers, row_stride);
png_read_row(png_ptr, row_pointers, NULL);
}
/* turn on interlace handling */
if (info_ptr->interlace_type)
number_passes = png_set_interlace_handling(png_ptr);
else
png_read_row(png_ptr, row_pointers, NULL);
number_passes = 1;
// printf("NP = %d ", number_passes);
iter.SetRow(row_pointers, row_stride);
y++;
} while(iter.PrevRow());
// printf("Y=%d ",y);
}
delete[] row_pointers;
// don't use the object to prevent warnings from VC++ about "unportable
// interaction between setjmp and C++ object destruction" (this is a correct
// warning, of course!)
wxPNGReaderIter *iter = new wxPNGReaderIter(this);
for (int pass=0; pass< number_passes; pass++)
{
iter->upset();
int y=0;
do {
//(unsigned char *)iter.GetRow();
if (info_ptr->interlace_type) {
if (pass>0)
iter->GetRow(row_pointers, row_stride);
png_read_row(png_ptr, row_pointers, NULL);
}
else
png_read_row(png_ptr, row_pointers, NULL);
/* read the rest of the file, getting any additional chunks
in info_ptr */
png_read_end(png_ptr, info_ptr);
iter->SetRow(row_pointers, row_stride);
y++;
} while(iter->PrevRow());
// printf("Y=%d ",y);
}
/* clean up after the read, and free any memory allocated */
png_read_destroy(png_ptr, info_ptr, (png_info *)0);
delete iter;
delete[] row_pointers;
/* free the structures */
delete(png_ptr);
delete(info_ptr);
/* read the rest of the file, getting any additional chunks
in info_ptr */
png_read_end(png_ptr, info_ptr);
/* close the file */
fclose(fp);
/* clean up after the read, and free any memory allocated */
png_read_destroy(png_ptr, info_ptr, (png_info *)0);
/* that's it */
return TRUE;
/* free the structures */
delete(png_ptr);
delete(info_ptr);
/* close the file */
fclose(fp);
/* that's it */
return TRUE;
}