Quite a cleanup action to avoid polluting the global namespace with private

BTextView classes:

* Declared the directly used BTextView helper classes as private BTextView
  classes and changed all affected files.
* Realized that Tracker's BPoseView was (accidentally?) using what used to
  be _BWidthBuffer_. It had declared it's own class with the same name and
  same members/size in headers/private/tracker/TextViewSupport.h, but the
  implementation was nowhere to be found. I can only explain this that
  the BTextView implementation was then actually linked and used. But the big
  problem was that it was used without locking (unlike in BTextView)! When
  many Tracker windows opened during system startup or later and they happened
  to each request characters not yet in the cache, I imagine things could have
  gone bad and corrupted memory. Anyways, since I can see the usefulness of
  the cache, BPoseView uses BTextView::WidthBuffer on purpose now. And I moved
  the locking inside BTextView::WidthBuffer::StringWidth().
* Adjusted InterfaceDefs.cpp accordingly.
* TODO: Move subsequent classes into BTextView namespace as well, ie derived
  classes that BTextView doesn't directly know about. All stuff in src/kits/
   inteface/textview_support/
* Added preliminary and not yet implemented layout friendly BTextView
  constructors.
* I will try to handle the insets imposed by BTextView::fTextRect a bit
  differently when used inside the new layout management framework. For this,
  I added BTextView::SetInsets() and GetInsets(). SetInsets() doesn't do
  anything yet.

So far, everything seems to work still... ;-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27654 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2008-09-20 15:08:40 +00:00
parent 8121345989
commit a682d9819f
20 changed files with 505 additions and 443 deletions
+11 -8
View File
@@ -21,16 +21,20 @@
*
* File: WidthBuffer.cpp
* Author: Stefano Ceccherini ([email protected])
* Description: _BWidthBuffer_ stores charachters widths in a hash table, to be able
* Description: WidthBuffer stores charachters widths in a hash table, to be able
* to retrieve them without passing through the app server.
* Used by BTextView and OpenTracker.
*/
#ifndef __WIDTHBUFFER_H
#define __WIDTHBUFFER_H
#include <TextView.h>
#include "TextViewSupportBuffer.h"
class BFont; // forward declaration
class BFont;
// TODO: enable this as soon as we are sure opentracker works
// with our libraries, since using a BFont here (as Dano does) is much better,
@@ -50,16 +54,15 @@ struct _width_table_ {
};
class _BTextGapBuffer_;
class _BWidthBuffer_ : public _BTextViewSupportBuffer_<_width_table_> {
class BTextView::WidthBuffer : public _BTextViewSupportBuffer_<_width_table_> {
public:
_BWidthBuffer_();
virtual ~_BWidthBuffer_();
WidthBuffer();
virtual ~WidthBuffer();
float StringWidth(const char *inText, int32 fromOffset, int32 length,
const BFont *inStyle);
float StringWidth(_BTextGapBuffer_ &gapBuffer, int32 fromOffset, int32 length,
const BFont *inStyle);
float StringWidth(BTextView::TextGapBuffer &gapBuffer, int32 fromOffset,
int32 length, const BFont *inStyle);
private:
bool FindTable(const BFont *font, int32 *outIndex);