]> git.saurik.com Git - wxWidgets.git/blobdiff - src/richtext/richtextbuffer.cpp
merge msw/gsocket.cpp into msw/sockmsw.cpp
[wxWidgets.git] / src / richtext / richtextbuffer.cpp
index 1362fab7092a822153d558ac57a8634288df701a..33031e957a9dc762c63f6a48a494f5d4919e739b 100644 (file)
@@ -57,6 +57,7 @@ const wxChar wxRichTextLineBreakChar = (wxChar) 29;
 
 inline void wxCheckSetFont(wxDC& dc, const wxFont& font)
 {
+#if 0
     const wxFont& font1 = dc.GetFont();
     if (font1.IsOk() && font.IsOk())
     {
@@ -68,6 +69,7 @@ inline void wxCheckSetFont(wxDC& dc, const wxFont& font)
             font1.GetFaceName() == font.GetFaceName())
             return;
     }
+#endif
     dc.SetFont(font);
 }
 
@@ -431,7 +433,7 @@ bool wxRichTextCompositeObject::Defragment(const wxRichTextRange& range)
     while (node)
     {
         wxRichTextObject* child = node->GetData();
-        if (!child->GetRange().IsOutside(range))
+        if (range == wxRICHTEXT_ALL || !child->GetRange().IsOutside(range))
         {
             wxRichTextCompositeObject* composite = wxDynamicCast(child, wxRichTextCompositeObject);
             if (composite)
@@ -3548,7 +3550,7 @@ bool wxRichTextParagraph::Layout(wxDC& dc, const wxRect& rect, int style)
     ClearUnusedLines(lineCount);
 
     // Apply styles to wrapped lines
-    ApplyParagraphStyle(attr, rect);
+    ApplyParagraphStyle(attr, rect, dc);
 
     SetCachedSize(wxSize(maxWidth, currentPosition.y + spaceBeforePara + spaceAfterPara));
 
@@ -3600,7 +3602,7 @@ bool wxRichTextParagraph::Layout(wxDC& dc, const wxRect& rect, int style)
 }
 
 /// Apply paragraph styles, such as centering, to wrapped lines
-void wxRichTextParagraph::ApplyParagraphStyle(const wxTextAttr& attr, const wxRect& rect)
+void wxRichTextParagraph::ApplyParagraphStyle(const wxTextAttr& attr, const wxRect& rect, wxDC& dc)
 {
     if (!attr.HasAlignment())
         return;
@@ -3616,12 +3618,14 @@ void wxRichTextParagraph::ApplyParagraphStyle(const wxTextAttr& attr, const wxRe
         // centering, right-justification
         if (attr.HasAlignment() && GetAttributes().GetAlignment() == wxTEXT_ALIGNMENT_CENTRE)
         {
-            pos.x = (rect.GetWidth() - size.x)/2 + pos.x;
+            int rightIndent = ConvertTenthsMMToPixels(dc, attr.GetRightIndent());
+            pos.x = (rect.GetWidth() - (pos.x - rect.x) - rightIndent - size.x)/2 + pos.x;
             line->SetPosition(pos);
         }
         else if (attr.HasAlignment() && GetAttributes().GetAlignment() == wxTEXT_ALIGNMENT_RIGHT)
         {
-            pos.x = pos.x + rect.GetWidth() - size.x;
+            int rightIndent = ConvertTenthsMMToPixels(dc, attr.GetRightIndent());
+            pos.x = rect.x + rect.GetWidth() - size.x - rightIndent;
             line->SetPosition(pos);
         }
 
@@ -4226,7 +4230,7 @@ bool wxRichTextParagraph::FindWrapPosition(const wxRichTextRange& range, wxDC& d
             widthBefore = 0;
 
         size_t i;
-        for (i = (size_t) range.GetStart(); i < (size_t) range.GetEnd(); i++)
+        for (i = (size_t) range.GetStart(); i <= (size_t) range.GetEnd(); i++)
         {
             int widthFromStartOfThisRange = (*partialExtents)[i - GetRange().GetStart()] - widthBefore;
 
@@ -5471,7 +5475,7 @@ wxTextAttr wxRichTextBuffer::GetStyleForNewParagraph(long pos, bool caretPositio
                 if (para->GetAttributes().HasBulletNumber())
                     attr.SetBulletNumber(para->GetAttributes().GetBulletNumber());
             }
-               }
+        }
 
         if (!foundAttributes)
         {
@@ -7065,10 +7069,11 @@ bool wxRichTextImage::LoadFromBlock()
 /// Make block from the wxImage
 bool wxRichTextImage::MakeBlock()
 {
-    if (m_imageBlock.GetImageType() == wxBITMAP_TYPE_ANY || m_imageBlock.GetImageType() == -1)
-        m_imageBlock.SetImageType(wxBITMAP_TYPE_PNG);
+    wxBitmapType type = m_imageBlock.GetImageType();
+    if ( type == wxBITMAP_TYPE_ANY || type == wxBITMAP_TYPE_INVALID )
+        m_imageBlock.SetImageType(type = wxBITMAP_TYPE_PNG);
 
-    m_imageBlock.MakeImageBlock(m_image, m_imageBlock.GetImageType());
+    m_imageBlock.MakeImageBlock(m_image, type);
     return m_imageBlock.Ok();
 }
 
@@ -7414,7 +7419,7 @@ bool wxRichTextImageBlock::MakeImageBlock(const wxString& filename, wxBitmapType
     wxString filenameToRead(filename);
     bool removeFile = false;
 
-    if (imageType == -1)
+    if (imageType == wxBITMAP_TYPE_INVALID)
         return false; // Could not determine image type
 
     if ((imageType != wxBITMAP_TYPE_JPEG) && convertToJPEG)
@@ -7456,7 +7461,7 @@ bool wxRichTextImageBlock::MakeImageBlock(wxImage& image, wxBitmapType imageType
     m_imageType = imageType;
     image.SetOption(wxT("quality"), quality);
 
-    if (imageType == -1)
+    if (imageType == wxBITMAP_TYPE_INVALID)
         return false; // Could not determine image type
 
     wxString tempFile;
@@ -7586,7 +7591,10 @@ bool wxRichTextImageBlock::ReadHex(wxInputStream& stream, int length, wxBitmapTy
     if (m_data)
         delete[] m_data;
 
-    wxChar str[2];
+    // create a null terminated temporary string:
+    char str[3];
+    str[2] = '\0';
+
     m_data = new unsigned char[dataSize];
     int i;
     for (i = 0; i < dataSize; i ++)