fixed warnings about truncating 64 bit integers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
2cfcf22d47
commit
ec52467188
@ -45,6 +45,39 @@ IMPLEMENT_DYNAMIC_CLASS(wxTIFFHandler,wxImageHandler)
|
|||||||
|
|
||||||
#if wxUSE_STREAMS
|
#if wxUSE_STREAMS
|
||||||
|
|
||||||
|
// helper to translate our, possibly 64 bit, wxFileOffset to TIFF, always 32
|
||||||
|
// bit, toff_t
|
||||||
|
static toff_t wxFileOffsetToTIFF(wxFileOffset ofs)
|
||||||
|
{
|
||||||
|
if ( ofs == wxInvalidOffset )
|
||||||
|
return (toff_t)-1;
|
||||||
|
|
||||||
|
toff_t tofs = wx_truncate_cast(toff_t, ofs);
|
||||||
|
wxCHECK_MSG( tofs == ofs, (toff_t)-1,
|
||||||
|
_T("TIFF library doesn't support large files") );
|
||||||
|
|
||||||
|
return tofs;
|
||||||
|
}
|
||||||
|
|
||||||
|
// another helper to convert standard seek mode to our
|
||||||
|
static wxSeekMode wxSeekModeFromTIFF(int whence)
|
||||||
|
{
|
||||||
|
switch ( whence )
|
||||||
|
{
|
||||||
|
case SEEK_SET:
|
||||||
|
return wxFromStart;
|
||||||
|
|
||||||
|
case SEEK_CUR:
|
||||||
|
return wxFromCurrent;
|
||||||
|
|
||||||
|
case SEEK_END:
|
||||||
|
return wxFromEnd;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return wxFromCurrent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -76,32 +109,18 @@ toff_t TIFFLINKAGEMODE
|
|||||||
_tiffSeekIProc(thandle_t handle, toff_t off, int whence)
|
_tiffSeekIProc(thandle_t handle, toff_t off, int whence)
|
||||||
{
|
{
|
||||||
wxInputStream *stream = (wxInputStream*) handle;
|
wxInputStream *stream = (wxInputStream*) handle;
|
||||||
wxSeekMode mode;
|
|
||||||
switch (whence)
|
|
||||||
{
|
|
||||||
case SEEK_SET: mode = wxFromStart; break;
|
|
||||||
case SEEK_CUR: mode = wxFromCurrent; break;
|
|
||||||
case SEEK_END: mode = wxFromEnd; break;
|
|
||||||
default: mode = wxFromCurrent; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (toff_t)stream->SeekI( (wxFileOffset)off, mode );
|
return wxFileOffsetToTIFF(stream->SeekI((wxFileOffset)off,
|
||||||
|
wxSeekModeFromTIFF(whence)));
|
||||||
}
|
}
|
||||||
|
|
||||||
toff_t TIFFLINKAGEMODE
|
toff_t TIFFLINKAGEMODE
|
||||||
_tiffSeekOProc(thandle_t handle, toff_t off, int whence)
|
_tiffSeekOProc(thandle_t handle, toff_t off, int whence)
|
||||||
{
|
{
|
||||||
wxOutputStream *stream = (wxOutputStream*) handle;
|
wxOutputStream *stream = (wxOutputStream*) handle;
|
||||||
wxSeekMode mode;
|
|
||||||
switch (whence)
|
|
||||||
{
|
|
||||||
case SEEK_SET: mode = wxFromStart; break;
|
|
||||||
case SEEK_CUR: mode = wxFromCurrent; break;
|
|
||||||
case SEEK_END: mode = wxFromEnd; break;
|
|
||||||
default: mode = wxFromCurrent; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (toff_t)stream->SeekO( (wxFileOffset)off, mode );
|
return wxFileOffsetToTIFF(stream->SeekO((wxFileOffset)off,
|
||||||
|
wxSeekModeFromTIFF(whence)));
|
||||||
}
|
}
|
||||||
|
|
||||||
int TIFFLINKAGEMODE
|
int TIFFLINKAGEMODE
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "wx/stattext.h"
|
#include "wx/stattext.h"
|
||||||
#include "wx/debug.h"
|
#include "wx/debug.h"
|
||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
|
#include "wx/longlong.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
#include "wx/msgdlg.h"
|
#include "wx/msgdlg.h"
|
||||||
#include "wx/sizer.h"
|
#include "wx/sizer.h"
|
||||||
@ -79,56 +80,83 @@
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
static
|
static
|
||||||
int wxCALLBACK wxFileDataNameCompare( long data1, long data2, long data)
|
int wxCALLBACK wxFileDataNameCompare( long data1, long data2, long sortOrder)
|
||||||
{
|
{
|
||||||
wxFileData *fd1 = (wxFileData*)data1;
|
wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
|
||||||
wxFileData *fd2 = (wxFileData*)data2;
|
wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
|
||||||
if (fd1->GetFileName() == wxT("..")) return -data;
|
|
||||||
if (fd2->GetFileName() == wxT("..")) return data;
|
if (fd1->GetFileName() == wxT(".."))
|
||||||
if (fd1->IsDir() && !fd2->IsDir()) return -data;
|
return -sortOrder;
|
||||||
if (fd2->IsDir() && !fd1->IsDir()) return data;
|
if (fd2->GetFileName() == wxT(".."))
|
||||||
return data*wxStrcmp( fd1->GetFileName(), fd2->GetFileName() );
|
return sortOrder;
|
||||||
|
if (fd1->IsDir() && !fd2->IsDir())
|
||||||
|
return -sortOrder;
|
||||||
|
if (fd2->IsDir() && !fd1->IsDir())
|
||||||
|
return sortOrder;
|
||||||
|
|
||||||
|
return sortOrder*wxStrcmp( fd1->GetFileName(), fd2->GetFileName() );
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
int wxCALLBACK wxFileDataSizeCompare( long data1, long data2, long data)
|
int wxCALLBACK wxFileDataSizeCompare(long data1, long data2, long sortOrder)
|
||||||
{
|
{
|
||||||
wxFileData *fd1 = (wxFileData*)data1;
|
wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
|
||||||
wxFileData *fd2 = (wxFileData*)data2;
|
wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
|
||||||
if (fd1->GetFileName() == wxT("..")) return -data;
|
|
||||||
if (fd2->GetFileName() == wxT("..")) return data;
|
if (fd1->GetFileName() == wxT(".."))
|
||||||
if (fd1->IsDir() && !fd2->IsDir()) return -data;
|
return -sortOrder;
|
||||||
if (fd2->IsDir() && !fd1->IsDir()) return data;
|
if (fd2->GetFileName() == wxT(".."))
|
||||||
if (fd1->IsLink() && !fd2->IsLink()) return -data;
|
return sortOrder;
|
||||||
if (fd2->IsLink() && !fd1->IsLink()) return data;
|
if (fd1->IsDir() && !fd2->IsDir())
|
||||||
return data*(fd1->GetSize() - fd2->GetSize());
|
return -sortOrder;
|
||||||
|
if (fd2->IsDir() && !fd1->IsDir())
|
||||||
|
return sortOrder;
|
||||||
|
if (fd1->IsLink() && !fd2->IsLink())
|
||||||
|
return -sortOrder;
|
||||||
|
if (fd2->IsLink() && !fd1->IsLink())
|
||||||
|
return sortOrder;
|
||||||
|
|
||||||
|
return fd1->GetSize() > fd2->GetSize() ? sortOrder : -sortOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
int wxCALLBACK wxFileDataTypeCompare( long data1, long data2, long data)
|
int wxCALLBACK wxFileDataTypeCompare(long data1, long data2, long sortOrder)
|
||||||
{
|
{
|
||||||
wxFileData *fd1 = (wxFileData*)data1;
|
wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
|
||||||
wxFileData *fd2 = (wxFileData*)data2;
|
wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
|
||||||
if (fd1->GetFileName() == wxT("..")) return -data;
|
|
||||||
if (fd2->GetFileName() == wxT("..")) return data;
|
if (fd1->GetFileName() == wxT(".."))
|
||||||
if (fd1->IsDir() && !fd2->IsDir()) return -data;
|
return -sortOrder;
|
||||||
if (fd2->IsDir() && !fd1->IsDir()) return data;
|
if (fd2->GetFileName() == wxT(".."))
|
||||||
if (fd1->IsLink() && !fd2->IsLink()) return -data;
|
return sortOrder;
|
||||||
if (fd2->IsLink() && !fd1->IsLink()) return data;
|
if (fd1->IsDir() && !fd2->IsDir())
|
||||||
return data*wxStrcmp( fd1->GetFileType(), fd2->GetFileType() );
|
return -sortOrder;
|
||||||
|
if (fd2->IsDir() && !fd1->IsDir())
|
||||||
|
return sortOrder;
|
||||||
|
if (fd1->IsLink() && !fd2->IsLink())
|
||||||
|
return -sortOrder;
|
||||||
|
if (fd2->IsLink() && !fd1->IsLink())
|
||||||
|
return sortOrder;
|
||||||
|
|
||||||
|
return sortOrder*wxStrcmp( fd1->GetFileType(), fd2->GetFileType() );
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
int wxCALLBACK wxFileDataTimeCompare( long data1, long data2, long data)
|
int wxCALLBACK wxFileDataTimeCompare(long data1, long data2, long sortOrder)
|
||||||
{
|
{
|
||||||
wxFileData *fd1 = (wxFileData*)data1;
|
wxFileData *fd1 = (wxFileData *)wxUIntToPtr(data1);
|
||||||
wxFileData *fd2 = (wxFileData*)data2;
|
wxFileData *fd2 = (wxFileData *)wxUIntToPtr(data2);
|
||||||
if (fd1->GetFileName() == wxT("..")) return -data;
|
|
||||||
if (fd2->GetFileName() == wxT("..")) return data;
|
|
||||||
if (fd1->IsDir() && !fd2->IsDir()) return -data;
|
|
||||||
if (fd2->IsDir() && !fd1->IsDir()) return data;
|
|
||||||
|
|
||||||
return fd1->GetDateTime().IsLaterThan(fd2->GetDateTime()) ? int(data) : -int(data);
|
if (fd1->GetFileName() == wxT(".."))
|
||||||
|
return -sortOrder;
|
||||||
|
if (fd2->GetFileName() == wxT(".."))
|
||||||
|
return sortOrder;
|
||||||
|
if (fd1->IsDir() && !fd2->IsDir())
|
||||||
|
return -sortOrder;
|
||||||
|
if (fd2->IsDir() && !fd1->IsDir())
|
||||||
|
return sortOrder;
|
||||||
|
|
||||||
|
return fd1->GetDateTime().IsLaterThan(fd2->GetDateTime()) ? sortOrder : -sortOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__DOS__) || defined(__WINDOWS__) || defined (__OS2__)
|
#if defined(__DOS__) || defined(__WINDOWS__) || defined (__OS2__)
|
||||||
@ -221,7 +249,7 @@ void wxFileData::ReadData()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_size = (long)buff.st_size;
|
m_size = buff.st_size;
|
||||||
|
|
||||||
m_dateTime = buff.st_mtime;
|
m_dateTime = buff.st_mtime;
|
||||||
|
|
||||||
@ -281,7 +309,8 @@ wxString wxFileData::GetHint() const
|
|||||||
else if (IsDrive())
|
else if (IsDrive())
|
||||||
s += _("<DRIVE>");
|
s += _("<DRIVE>");
|
||||||
else // plain file
|
else // plain file
|
||||||
s += wxString::Format( _("%ld bytes"), m_size );
|
s += wxString::Format(_("%ld bytes"),
|
||||||
|
wxLongLong(m_size).ToString().c_str());
|
||||||
|
|
||||||
s += wxT(' ');
|
s += wxT(' ');
|
||||||
|
|
||||||
@ -306,7 +335,7 @@ wxString wxFileData::GetEntry( fileListFieldType num ) const
|
|||||||
|
|
||||||
case FileList_Size:
|
case FileList_Size:
|
||||||
if (!IsDir() && !IsLink() && !IsDrive())
|
if (!IsDir() && !IsLink() && !IsDrive())
|
||||||
s.Printf(_T("%ld"), m_size);
|
s = wxLongLong(m_size).ToString();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FileList_Type:
|
case FileList_Type:
|
||||||
@ -792,35 +821,29 @@ void wxFileCtrl::OnListColClick( wxListEvent &event )
|
|||||||
SortItems(m_sort_field, m_sort_foward);
|
SortItems(m_sort_field, m_sort_foward);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxFileCtrl::SortItems(wxFileData::fileListFieldType field, bool foward)
|
void wxFileCtrl::SortItems(wxFileData::fileListFieldType field, bool forward)
|
||||||
{
|
{
|
||||||
m_sort_field = field;
|
m_sort_field = field;
|
||||||
m_sort_foward = foward;
|
m_sort_foward = forward;
|
||||||
long sort_dir = foward ? 1 : -1;
|
const long sort_dir = forward ? 1 : -1;
|
||||||
|
|
||||||
switch (m_sort_field)
|
switch (m_sort_field)
|
||||||
{
|
{
|
||||||
case wxFileData::FileList_Name :
|
case wxFileData::FileList_Name :
|
||||||
{
|
wxListCtrl::SortItems(wxFileDataNameCompare, sort_dir);
|
||||||
wxListCtrl::SortItems((wxListCtrlCompare)wxFileDataNameCompare, sort_dir);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case wxFileData::FileList_Size :
|
case wxFileData::FileList_Size :
|
||||||
{
|
wxListCtrl::SortItems(wxFileDataSizeCompare, sort_dir);
|
||||||
wxListCtrl::SortItems((wxListCtrlCompare)wxFileDataSizeCompare, sort_dir);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case wxFileData::FileList_Type :
|
case wxFileData::FileList_Type :
|
||||||
{
|
wxListCtrl::SortItems(wxFileDataTypeCompare, sort_dir);
|
||||||
wxListCtrl::SortItems((wxListCtrlCompare)wxFileDataTypeCompare, sort_dir);
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
case wxFileData::FileList_Time :
|
case wxFileData::FileList_Time :
|
||||||
{
|
wxListCtrl::SortItems(wxFileDataTimeCompare, sort_dir);
|
||||||
wxListCtrl::SortItems((wxListCtrlCompare)wxFileDataTimeCompare, sort_dir);
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
default : break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user