- Added bilinear image resizing algorithm to wxImage (bishop).
- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
- Fix bug with parsing concatenated switches in wxCmdLineParser (Mike Funduc).
+- Added wxMBConv::cMB2WC(wxCharBuffer) and cWC2MB(wxWCharBuffer) overloads.
All (GUI):
const wxCharBuffer
cWC2MB(const wchar_t *in, size_t inLen, size_t *outLen) const;
+ // And yet more convenience functions for converting the entire buffers:
+ // these are the simplest and least error-prone as you never need to bother
+ // with lengths/sizes directly.
+ const wxWCharBuffer cMB2WC(const wxScopedCharBuffer& in) const;
+ const wxCharBuffer cWC2MB(const wxScopedWCharBuffer& in) const;
+
// convenience functions for converting MB or WC to/from wxWin default
#if wxUSE_UNICODE
const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); }
size_t inLen,
size_t *outLen) const;
+ /**
+ Converts a char buffer to wide char one.
+
+ This is the most convenient and safest conversion function as you
+ don't have to deal with the buffer lengths directly. Use it if the
+ input buffer is known not to be empty or if you are sure that the
+ conversion is going to succeed -- otherwise, use the overload above to
+ be able to distinguish between empty input and conversion failure.
+
+ @return
+ The buffer containing the converted text, empty if the input was
+ empty or if the conversion failed.
+
+ @since 2.9.1
+ */
+ const wxWCharBuffer cMB2WC(const wxCharBuffer& buf) const;
+
//@{
/**
Converts from multibyte encoding to the current wxChar type (which
size_t inLen,
size_t *outLen) const;
+ /**
+ Converts a wide char buffer to char one.
+
+ This is the most convenient and safest conversion function as you
+ don't have to deal with the buffer lengths directly. Use it if the
+ input buffer is known not to be empty or if you are sure that the
+ conversion is going to succeed -- otherwise, use the overload above to
+ be able to distinguish between empty input and conversion failure.
+
+ @return
+ The buffer containing the converted text, empty if the input was
+ empty or if the conversion failed.
+
+ @since 2.9.1
+ */
+ const wxCharBuffer cWC2MB(const wxWCharBuffer& buf) const;
+
//@{
/**
Converts from Unicode to the current wxChar type.
return wxCharBuffer();
}
+const wxWCharBuffer wxMBConv::cMB2WC(const wxScopedCharBuffer& buf) const
+{
+ const size_t srcLen = buf.length();
+ if ( srcLen )
+ {
+ const size_t dstLen = ToWChar(NULL, 0, buf, srcLen);
+ if ( dstLen != wxCONV_FAILED )
+ {
+ wxWCharBuffer wbuf(dstLen);
+ wbuf.data()[dstLen] = L'\0';
+ if ( ToWChar(wbuf.data(), dstLen, buf, srcLen) != wxCONV_FAILED )
+ return wbuf;
+ }
+ }
+
+ return wxWCharBuffer();
+}
+
+const wxCharBuffer wxMBConv::cWC2MB(const wxScopedWCharBuffer& wbuf) const
+{
+ const size_t srcLen = wbuf.length();
+ if ( srcLen )
+ {
+ const size_t dstLen = FromWChar(NULL, 0, wbuf, srcLen);
+ if ( dstLen != wxCONV_FAILED )
+ {
+ wxCharBuffer buf(dstLen);
+ buf.data()[dstLen] = '\0';
+ if ( FromWChar(buf.data(), dstLen, wbuf, srcLen) != wxCONV_FAILED )
+ return buf;
+ }
+ }
+
+ return wxCharBuffer();
+}
+
// ----------------------------------------------------------------------------
// wxMBConvLibc
// ----------------------------------------------------------------------------