unix linefeeds

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4244 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
shatty
2003-08-08 09:53:59 +00:00
parent 2a0650c030
commit 9fdfaac6f3
7 changed files with 784 additions and 784 deletions
+135 -135
View File
@@ -1,135 +1,135 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS // Copyright (c) 2001-2002, OpenBeOS
// //
// Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation // to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software. // all copies or substantial portions of the Software.
// //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// //
// File Name: LineBuffer.cpp // File Name: LineBuffer.cpp
// Author: Marc Flerackers ([email protected]) // Author: Marc Flerackers ([email protected])
// Description: Line storage used by BTextView // Description: Line storage used by BTextView
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Standard Includes ----------------------------------------------------------- // Standard Includes -----------------------------------------------------------
#include <string.h> #include <string.h>
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
#include "LineBuffer.h" #include "LineBuffer.h"
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
// Local Includes -------------------------------------------------------------- // Local Includes --------------------------------------------------------------
// Local Defines --------------------------------------------------------------- // Local Defines ---------------------------------------------------------------
// Globals --------------------------------------------------------------------- // Globals ---------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
_BLineBuffer_::_BLineBuffer_() _BLineBuffer_::_BLineBuffer_()
: fBlockSize(20), : fBlockSize(20),
fItemCount(2), fItemCount(2),
fPhysicalSize(22), fPhysicalSize(22),
fObjectList(NULL) fObjectList(NULL)
{ {
fObjectList = new STELine[fPhysicalSize]; fObjectList = new STELine[fPhysicalSize];
memset(fObjectList, 0, fPhysicalSize * sizeof(STELine)); memset(fObjectList, 0, fPhysicalSize * sizeof(STELine));
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
_BLineBuffer_::~_BLineBuffer_() _BLineBuffer_::~_BLineBuffer_()
{ {
delete[] fObjectList; delete[] fObjectList;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BLineBuffer_::InsertLine(STELine *line, int32 index) void _BLineBuffer_::InsertLine(STELine *line, int32 index)
{ {
if (fItemCount == fPhysicalSize - 1) if (fItemCount == fPhysicalSize - 1)
{ {
STELine *new_list = new STELine[fPhysicalSize + fBlockSize]; STELine *new_list = new STELine[fPhysicalSize + fBlockSize];
memcpy(new_list, fObjectList, fPhysicalSize * sizeof(STELine)); memcpy(new_list, fObjectList, fPhysicalSize * sizeof(STELine));
delete fObjectList; delete fObjectList;
fObjectList = new_list; fObjectList = new_list;
fPhysicalSize += fBlockSize; fPhysicalSize += fBlockSize;
} }
if (index < fItemCount) if (index < fItemCount)
memmove(fObjectList + index + 1, fObjectList + index, memmove(fObjectList + index + 1, fObjectList + index,
(fItemCount - index) * sizeof(STELine)); (fItemCount - index) * sizeof(STELine));
memcpy(fObjectList + index, line, sizeof(STELine)); memcpy(fObjectList + index, line, sizeof(STELine));
fItemCount++; fItemCount++;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BLineBuffer_::RemoveLines(int32 index, int32 count) void _BLineBuffer_::RemoveLines(int32 index, int32 count)
{ {
memmove(fObjectList + index, fObjectList + index + count, memmove(fObjectList + index, fObjectList + index + count,
(fItemCount - index - count) * sizeof(STELine)); (fItemCount - index - count) * sizeof(STELine));
fItemCount -= count; fItemCount -= count;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BLineBuffer_::RemoveLineRange(int32 from, int32 to) void _BLineBuffer_::RemoveLineRange(int32 from, int32 to)
{ {
int32 linefrom = OffsetToLine(from); int32 linefrom = OffsetToLine(from);
int32 lineto = OffsetToLine(to); int32 lineto = OffsetToLine(to);
if (linefrom < lineto) if (linefrom < lineto)
RemoveLines(linefrom + 1, lineto - linefrom); RemoveLines(linefrom + 1, lineto - linefrom);
BumpOffset(linefrom + 1, from - to); BumpOffset(linefrom + 1, from - to);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int32 _BLineBuffer_::OffsetToLine(int32 offset) const int32 _BLineBuffer_::OffsetToLine(int32 offset) const
{ {
if (offset == 0) if (offset == 0)
return 0; return 0;
for (int i = 0; i < fItemCount; i++) for (int i = 0; i < fItemCount; i++)
{ {
if (offset < fObjectList[i].fOffset) if (offset < fObjectList[i].fOffset)
return i - 1; return i - 1;
} }
return fItemCount - 2; return fItemCount - 2;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int32 _BLineBuffer_::PixelToLine(float height) const int32 _BLineBuffer_::PixelToLine(float height) const
{ {
for (int i = 0; i < fItemCount; i++) for (int i = 0; i < fItemCount; i++)
{ {
if (height < fObjectList[i].fHeight) if (height < fObjectList[i].fHeight)
return i - 1; return i - 1;
} }
return fItemCount - 2; return fItemCount - 2;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BLineBuffer_::BumpOffset(int32 line, int32 offset) void _BLineBuffer_::BumpOffset(int32 line, int32 offset)
{ {
for (int i = line; i < fItemCount; i++) for (int i = line; i < fItemCount; i++)
fObjectList[i].fOffset += offset; fObjectList[i].fOffset += offset;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/* /*
* $Log $ * $Log $
* *
* $Id $ * $Id $
* *
*/ */
+75 -75
View File
@@ -1,75 +1,75 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS // Copyright (c) 2001-2002, OpenBeOS
// //
// Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation // to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software. // all copies or substantial portions of the Software.
// //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// //
// File Name: LineBuffer.h // File Name: LineBuffer.h
// Author: Marc Flerackers ([email protected]) // Author: Marc Flerackers ([email protected])
// Description: Line storage used by BTextView // Description: Line storage used by BTextView
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Standard Includes ----------------------------------------------------------- // Standard Includes -----------------------------------------------------------
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
#include "SupportDefs.h" #include "SupportDefs.h"
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
// Local Includes -------------------------------------------------------------- // Local Includes --------------------------------------------------------------
// Local Defines --------------------------------------------------------------- // Local Defines ---------------------------------------------------------------
struct STELine { struct STELine {
int32 fOffset; int32 fOffset;
float fHeight; float fHeight;
float fLineHeight; float fLineHeight;
float fWidth; float fWidth;
}; };
// Globals --------------------------------------------------------------------- // Globals ---------------------------------------------------------------------
// _BLineBuffer_ class --------------------------------------------------------- // _BLineBuffer_ class ---------------------------------------------------------
class _BLineBuffer_ { class _BLineBuffer_ {
public: public:
_BLineBuffer_(); _BLineBuffer_();
virtual ~_BLineBuffer_(); virtual ~_BLineBuffer_();
void InsertLine(STELine *line, int32); void InsertLine(STELine *line, int32);
void RemoveLines(int32 index, int32 count); void RemoveLines(int32 index, int32 count);
void RemoveLineRange(int32 from, int32 to); void RemoveLineRange(int32 from, int32 to);
int32 OffsetToLine(int32 offset) const; int32 OffsetToLine(int32 offset) const;
int32 PixelToLine(float height) const; int32 PixelToLine(float height) const;
void BumpOffset(int32 line, int32 offset); void BumpOffset(int32 line, int32 offset);
void BumpOrigin(float, int32); void BumpOrigin(float, int32);
int32 fBlockSize; int32 fBlockSize;
int32 fItemCount; int32 fItemCount;
size_t fPhysicalSize; size_t fPhysicalSize;
STELine *fObjectList; STELine *fObjectList;
}; };
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/* /*
* $Log $ * $Log $
* *
* $Id $ * $Id $
* *
*/ */
+156 -156
View File
@@ -1,156 +1,156 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS // Copyright (c) 2001-2002, OpenBeOS
// //
// Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation // to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software. // all copies or substantial portions of the Software.
// //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// //
// File Name: StyleBuffer.cpp // File Name: StyleBuffer.cpp
// Author: Marc Flerackers ([email protected]) // Author: Marc Flerackers ([email protected])
// Description: Style storage used by BTextView // Description: Style storage used by BTextView
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Standard Includes ----------------------------------------------------------- // Standard Includes -----------------------------------------------------------
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
#include "StyleBuffer.h" #include "StyleBuffer.h"
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
// Local Includes -------------------------------------------------------------- // Local Includes --------------------------------------------------------------
// Local Defines --------------------------------------------------------------- // Local Defines ---------------------------------------------------------------
// Globals --------------------------------------------------------------------- // Globals ---------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
_BStyleBuffer_::_BStyleBuffer_(const BFont *font, const rgb_color *color) _BStyleBuffer_::_BStyleBuffer_(const BFont *font, const rgb_color *color)
: fRuns(10, 10), : fRuns(10, 10),
fRecords(10, 10) fRecords(10, 10)
{ {
rgb_color black = {0, 0, 0, 255}; rgb_color black = {0, 0, 0, 255};
SetNullStyle(0, font ? font : be_plain_font, color ? color : &black, 0); SetNullStyle(0, font ? font : be_plain_font, color ? color : &black, 0);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
_BStyleBuffer_::~_BStyleBuffer_() _BStyleBuffer_::~_BStyleBuffer_()
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::SetNullStyle(uint32 mode, const BFont *font, void _BStyleBuffer_::SetNullStyle(uint32 mode, const BFont *font,
const rgb_color *color, int32) const rgb_color *color, int32)
{ {
// TODO: use mode. // TODO: use mode.
if (font) if (font)
fNullStyle.fFont = *font; fNullStyle.fFont = *font;
if (color) if (color)
fNullStyle.fColor = *color; fNullStyle.fColor = *color;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::GetNullStyle(const BFont **font, const rgb_color **color) const void _BStyleBuffer_::GetNullStyle(const BFont **font, const rgb_color **color) const
{ {
*font = &fNullStyle.fFont; *font = &fNullStyle.fFont;
*color = &fNullStyle.fColor; *color = &fNullStyle.fColor;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::SyncNullStyle(int32) void _BStyleBuffer_::SyncNullStyle(int32)
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::InvalidateNullStyle() void _BStyleBuffer_::InvalidateNullStyle()
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool _BStyleBuffer_::IsValidNullStyle() const bool _BStyleBuffer_::IsValidNullStyle() const
{ {
// TODO: why would a style be invalid? // TODO: why would a style be invalid?
return true; return true;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::SetStyle(uint32 mode, const BFont *font, BFont *, void _BStyleBuffer_::SetStyle(uint32 mode, const BFont *font, BFont *,
const rgb_color *color, rgb_color *) const const rgb_color *color, rgb_color *) const
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::GetStyle(uint32 mode, BFont *font, rgb_color *color) const void _BStyleBuffer_::GetStyle(uint32 mode, BFont *font, rgb_color *color) const
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::SetStyleRange(int32 from, int32 to, int32, uint32 mode, void _BStyleBuffer_::SetStyleRange(int32 from, int32 to, int32, uint32 mode,
const BFont *, const rgb_color *) const BFont *, const rgb_color *)
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int32 _BStyleBuffer_::GetStyleRange(int32 from, int32 to) const int32 _BStyleBuffer_::GetStyleRange(int32 from, int32 to) const
{ {
return 0; return 0;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::ContinuousGetStyle(BFont *, uint32 *, rgb_color *, bool *, void _BStyleBuffer_::ContinuousGetStyle(BFont *, uint32 *, rgb_color *, bool *,
int32, int32) const int32, int32) const
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::RemoveStyles(int32 from, int32 to) void _BStyleBuffer_::RemoveStyles(int32 from, int32 to)
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::RemoveStyleRange(int32 from, int32 to) void _BStyleBuffer_::RemoveStyleRange(int32 from, int32 to)
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int32 _BStyleBuffer_::OffsetToRun(int32 offset) const int32 _BStyleBuffer_::OffsetToRun(int32 offset) const
{ {
if (offset == 0) if (offset == 0)
return 0; return 0;
for (int i = 0; i < fRuns.fCount; i++) for (int i = 0; i < fRuns.fCount; i++)
{ {
if (offset < fRuns.fItems[i].fOffset) if (offset < fRuns.fItems[i].fOffset)
return i - 1; return i - 1;
} }
return fRuns.fCount - 2; return fRuns.fCount - 2;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BStyleBuffer_::BumpOffset(int32 run, int32 offset) void _BStyleBuffer_::BumpOffset(int32 run, int32 offset)
{ {
for (int i = run; i < fRuns.fCount; i++) for (int i = run; i < fRuns.fCount; i++)
fRuns.fItems[i].fOffset += offset; fRuns.fItems[i].fOffset += offset;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/*void _BStyleBuffer_::Iterate(int32, int32, _BInlineInput_ *, const BFont **, /*void _BStyleBuffer_::Iterate(int32, int32, _BInlineInput_ *, const BFont **,
const rgb_color **, float *, uint32 *) const const rgb_color **, float *, uint32 *) const
{ {
}*/ }*/
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
STEStyleRecord *_BStyleBuffer_::operator[](int32 index) STEStyleRecord *_BStyleBuffer_::operator[](int32 index)
{ {
if (index < fRecords.fCount) if (index < fRecords.fCount)
return fRecords.fItems + index; return fRecords.fItems + index;
else else
return NULL; return NULL;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/* /*
* $Log $ * $Log $
* *
* $Id $ * $Id $
* *
*/ */
+99 -99
View File
@@ -1,99 +1,99 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS // Copyright (c) 2001-2002, OpenBeOS
// //
// Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation // to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software. // all copies or substantial portions of the Software.
// //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// //
// File Name: StyleBuffer.h // File Name: StyleBuffer.h
// Author: Marc Flerackers ([email protected]) // Author: Marc Flerackers ([email protected])
// Description: Style storage used by BTextView // Description: Style storage used by BTextView
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Standard Includes ----------------------------------------------------------- // Standard Includes -----------------------------------------------------------
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
#include <SupportDefs.h> #include <SupportDefs.h>
#include <InterfaceDefs.h> #include <InterfaceDefs.h>
#include <Font.h> #include <Font.h>
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
// Local Includes -------------------------------------------------------------- // Local Includes --------------------------------------------------------------
#include "TextViewSupportBuffer.h" #include "TextViewSupportBuffer.h"
// Local Defines --------------------------------------------------------------- // Local Defines ---------------------------------------------------------------
struct STEStyleRunDesc { struct STEStyleRunDesc {
int32 fOffset; int32 fOffset;
int32 fStyle; int32 fStyle;
}; };
struct STEStyleRecord { struct STEStyleRecord {
BFont fFont; BFont fFont;
rgb_color fColor; rgb_color fColor;
}; };
// Globals --------------------------------------------------------------------- // Globals ---------------------------------------------------------------------
// _BStyleBuffer_ class -------------------------------------------------------- // _BStyleBuffer_ class --------------------------------------------------------
class _BStyleBuffer_ { class _BStyleBuffer_ {
public: public:
_BStyleBuffer_(const BFont *, const rgb_color *); _BStyleBuffer_(const BFont *, const rgb_color *);
virtual ~_BStyleBuffer_(); virtual ~_BStyleBuffer_();
void SetNullStyle(uint32, const BFont *, const rgb_color *, int32); void SetNullStyle(uint32, const BFont *, const rgb_color *, int32);
void GetNullStyle(const BFont **, const rgb_color **) const; void GetNullStyle(const BFont **, const rgb_color **) const;
void SyncNullStyle(int32); void SyncNullStyle(int32);
void InvalidateNullStyle(); void InvalidateNullStyle();
bool IsValidNullStyle() const; bool IsValidNullStyle() const;
void SetStyle(uint32, const BFont *, BFont *, const rgb_color *, void SetStyle(uint32, const BFont *, BFont *, const rgb_color *,
rgb_color *) const; rgb_color *) const;
void GetStyle(uint32, BFont *, rgb_color *) const; void GetStyle(uint32, BFont *, rgb_color *) const;
void SetStyleRange(int32, int32, int32, uint32 mode, const BFont *, void SetStyleRange(int32, int32, int32, uint32 mode, const BFont *,
const rgb_color *); const rgb_color *);
int32 GetStyleRange(int32, int32) const; int32 GetStyleRange(int32, int32) const;
void ContinuousGetStyle(BFont *, uint32 *, rgb_color *, bool *, void ContinuousGetStyle(BFont *, uint32 *, rgb_color *, bool *,
int32, int32) const; int32, int32) const;
void RemoveStyles(int32 from, int32 to); void RemoveStyles(int32 from, int32 to);
void RemoveStyleRange(int32 from, int32 to); void RemoveStyleRange(int32 from, int32 to);
int32 OffsetToRun(int32 offset) const; int32 OffsetToRun(int32 offset) const;
void BumpOffset(int32 run, int32 offset); void BumpOffset(int32 run, int32 offset);
// void Iterate(int32, int32, _BInlineInput_ *, const BFont **, // void Iterate(int32, int32, _BInlineInput_ *, const BFont **,
// const rgb_color **, float *, uint32 *) const; // const rgb_color **, float *, uint32 *) const;
STEStyleRecord *operator[](int32); STEStyleRecord *operator[](int32);
private: private:
_BTextViewSupportBuffer_<STEStyleRunDesc> fRuns; _BTextViewSupportBuffer_<STEStyleRunDesc> fRuns;
_BTextViewSupportBuffer_<STEStyleRecord> fRecords; _BTextViewSupportBuffer_<STEStyleRecord> fRecords;
STEStyleRecord fNullStyle; STEStyleRecord fNullStyle;
}; };
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/* /*
* $Log $ * $Log $
* *
* $Id $ * $Id $
* *
*/ */
+138 -138
View File
@@ -1,138 +1,138 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS // Copyright (c) 2001-2002, OpenBeOS
// //
// Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation // to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software. // all copies or substantial portions of the Software.
// //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// //
// File Name: TextGapBuffer.cpp // File Name: TextGapBuffer.cpp
// Author: Marc Flerackers ([email protected]) // Author: Marc Flerackers ([email protected])
// Description: Text storage used by BTextView // Description: Text storage used by BTextView
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Standard Includes ----------------------------------------------------------- // Standard Includes -----------------------------------------------------------
#include <string.h> #include <string.h>
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
// Local Includes -------------------------------------------------------------- // Local Includes --------------------------------------------------------------
#include "TextGapBuffer.h" #include "TextGapBuffer.h"
// Local Defines --------------------------------------------------------------- // Local Defines ---------------------------------------------------------------
// Globals --------------------------------------------------------------------- // Globals ---------------------------------------------------------------------
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
_BTextGapBuffer_::_BTextGapBuffer_() _BTextGapBuffer_::_BTextGapBuffer_()
: fText(NULL), : fText(NULL),
fLogicalBytes(0), fLogicalBytes(0),
fPhysicalBytes(2048) fPhysicalBytes(2048)
{ {
fText = new char[fPhysicalBytes]; fText = new char[fPhysicalBytes];
*fText = '\0'; *fText = '\0';
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
_BTextGapBuffer_::~_BTextGapBuffer_() _BTextGapBuffer_::~_BTextGapBuffer_()
{ {
delete[] fText; delete[] fText;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BTextGapBuffer_::InsertText(const char *text, int32 length, int32 offset) void _BTextGapBuffer_::InsertText(const char *text, int32 length, int32 offset)
{ {
// If needed, resize buffer // If needed, resize buffer
if (fPhysicalBytes < fLogicalBytes + length + 1) if (fPhysicalBytes < fLogicalBytes + length + 1)
Resize(fLogicalBytes + length + 1); Resize(fLogicalBytes + length + 1);
// Move text after insertion point // Move text after insertion point
memcpy(fText + offset + length, fText + offset, memcpy(fText + offset + length, fText + offset,
fLogicalBytes + 1 - offset); fLogicalBytes + 1 - offset);
// Copy new text // Copy new text
memcpy(fText + offset, text, length); memcpy(fText + offset, text, length);
// Update used bytes // Update used bytes
fLogicalBytes += length; fLogicalBytes += length;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BTextGapBuffer_::RemoveRange(int32 from, int32 to) void _BTextGapBuffer_::RemoveRange(int32 from, int32 to)
{ {
// Move text after deletion point // Move text after deletion point
memcpy(fText + from, fText + to, fLogicalBytes + 1 - to); memcpy(fText + from, fText + to, fLogicalBytes + 1 - to);
// Update used bytes // Update used bytes
fLogicalBytes -= to - from; fLogicalBytes -= to - from;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
char *_BTextGapBuffer_::Text() char *_BTextGapBuffer_::Text()
{ {
if (fLogicalBytes == 0 || fText[fLogicalBytes - 1] != '\0') if (fLogicalBytes == 0 || fText[fLogicalBytes - 1] != '\0')
{ {
if (fPhysicalBytes < fLogicalBytes + 1) if (fPhysicalBytes < fLogicalBytes + 1)
{ {
char *new_text = new char[fLogicalBytes + 1]; char *new_text = new char[fLogicalBytes + 1];
if (fText) if (fText)
{ {
memcpy(new_text, fText, fLogicalBytes ); memcpy(new_text, fText, fLogicalBytes );
delete fText; delete fText;
} }
fText = new_text; fText = new_text;
} }
fText[fLogicalBytes] = '\0'; fText[fLogicalBytes] = '\0';
} }
return fText; return fText;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
char *_BTextGapBuffer_::RealText() char *_BTextGapBuffer_::RealText()
{ {
return fText; return fText;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
char _BTextGapBuffer_::RealCharAt(int32 offset) const char _BTextGapBuffer_::RealCharAt(int32 offset) const
{ {
return *(fText + offset); return *(fText + offset);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void _BTextGapBuffer_::Resize(int32 size) void _BTextGapBuffer_::Resize(int32 size)
{ {
if (fPhysicalBytes < size) if (fPhysicalBytes < size)
{ {
char *text = new char[size]; char *text = new char[size];
if (fText) if (fText)
{ {
memcpy(text, fText, fLogicalBytes); memcpy(text, fText, fLogicalBytes);
delete fText; delete fText;
} }
fText = text; fText = text;
fPhysicalBytes = size; fPhysicalBytes = size;
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/* /*
* $Log $ * $Log $
* *
* $Id $ * $Id $
* *
*/ */
+77 -77
View File
@@ -1,77 +1,77 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS // Copyright (c) 2001-2002, OpenBeOS
// //
// Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation // to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software. // all copies or substantial portions of the Software.
// //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// //
// File Name: TextGapBuffer.h // File Name: TextGapBuffer.h
// Author: Marc Flerackers ([email protected]) // Author: Marc Flerackers ([email protected])
// Description: Text storage used by BTextView // Description: Text storage used by BTextView
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Standard Includes ----------------------------------------------------------- // Standard Includes -----------------------------------------------------------
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
#include "SupportDefs.h" #include "SupportDefs.h"
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
// Local Includes -------------------------------------------------------------- // Local Includes --------------------------------------------------------------
// Local Defines --------------------------------------------------------------- // Local Defines ---------------------------------------------------------------
// Globals --------------------------------------------------------------------- // Globals ---------------------------------------------------------------------
// _BTextGapBuffer_ class ------------------------------------------------------ // _BTextGapBuffer_ class ------------------------------------------------------
class _BTextGapBuffer_ { class _BTextGapBuffer_ {
public: public:
_BTextGapBuffer_(); _BTextGapBuffer_();
virtual ~_BTextGapBuffer_(); virtual ~_BTextGapBuffer_();
void InsertText(const char *text, int32 length, int32 offset); void InsertText(const char *text, int32 length, int32 offset);
void RemoveRange(int32 from, int32 to); void RemoveRange(int32 from, int32 to);
char *Text(); char *Text();
char *RealText(); char *RealText();
void GetString(int32 offset, int32 length, char *buffer); void GetString(int32 offset, int32 length, char *buffer);
void GetString(int32, int32 *); void GetString(int32, int32 *);
char RealCharAt(int32 offset) const; char RealCharAt(int32 offset) const;
bool FindChar(char c, int32 inOffset, int32 *outOffset); bool FindChar(char c, int32 inOffset, int32 *outOffset);
void SizeGapTo(int32); void SizeGapTo(int32);
void MoveGapTo(int32); void MoveGapTo(int32);
void InsertText(BFile *, int32, int32, int32); void InsertText(BFile *, int32, int32, int32);
bool PasswordMode() const; bool PasswordMode() const;
void SetPasswordMode(bool); void SetPasswordMode(bool);
void Resize(int32 size); void Resize(int32 size);
char *fText; char *fText;
int32 fLogicalBytes; int32 fLogicalBytes;
int32 fPhysicalBytes; int32 fPhysicalBytes;
}; };
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/* /*
* $Log $ * $Log $
* *
* $Id $ * $Id $
* *
*/ */
@@ -1,104 +1,104 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS // Copyright (c) 2001-2002, OpenBeOS
// //
// Permission is hereby granted, free of charge, to any person obtaining a // Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"), // copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation // to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, // the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the // and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions: // Software is furnished to do so, subject to the following conditions:
// //
// The above copyright notice and this permission notice shall be included in // The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software. // all copies or substantial portions of the Software.
// //
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// //
// File Name: TextViewSupportBuffer.h // File Name: TextViewSupportBuffer.h
// Author: Marc Flerackers ([email protected]) // Author: Marc Flerackers ([email protected])
// Description: Template class used to implement the various BTextView // Description: Template class used to implement the various BTextView
// buffer classes. // buffer classes.
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Standard Includes ----------------------------------------------------------- // Standard Includes -----------------------------------------------------------
#include <malloc.h> #include <malloc.h>
// System Includes ------------------------------------------------------------- // System Includes -------------------------------------------------------------
#include "SupportDefs.h" #include "SupportDefs.h"
// Project Includes ------------------------------------------------------------ // Project Includes ------------------------------------------------------------
// Local Includes -------------------------------------------------------------- // Local Includes --------------------------------------------------------------
// Local Defines --------------------------------------------------------------- // Local Defines ---------------------------------------------------------------
// Globals --------------------------------------------------------------------- // Globals ---------------------------------------------------------------------
// _BTextViewSupportBuffer_ class ---------------------------------------------- // _BTextViewSupportBuffer_ class ----------------------------------------------
template <class T> template <class T>
class _BTextViewSupportBuffer_ { class _BTextViewSupportBuffer_ {
public: public:
_BTextViewSupportBuffer_(int32 count, int32 blockSize); _BTextViewSupportBuffer_(int32 count, int32 blockSize);
virtual ~_BTextViewSupportBuffer_(); virtual ~_BTextViewSupportBuffer_();
void InsertItemsAt(int32 offset, int32 count, const T *items); void InsertItemsAt(int32 offset, int32 count, const T *items);
void RemoveItemsAt(int32 offset, int32 count); void RemoveItemsAt(int32 offset, int32 count);
int32 fBlockSize; int32 fBlockSize;
int32 fCount; int32 fCount;
int32 fPhysicalSize; int32 fPhysicalSize;
T *fItems; T *fItems;
int32 fReserved; int32 fReserved;
}; };
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
template <class T> template <class T>
_BTextViewSupportBuffer_<T>::_BTextViewSupportBuffer_(int32 count, int32 blockSize) _BTextViewSupportBuffer_<T>::_BTextViewSupportBuffer_(int32 count, int32 blockSize)
: :
fBlockSize(blockSize), fBlockSize(blockSize),
fCount(count), fCount(count),
fPhysicalSize(count + blockSize), fPhysicalSize(count + blockSize),
fItems(NULL) fItems(NULL)
{ {
fItems = (T*)malloc(fPhysicalSize * sizeof(T)); fItems = (T*)malloc(fPhysicalSize * sizeof(T));
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
template <class T> template <class T>
_BTextViewSupportBuffer_<T>::~_BTextViewSupportBuffer_() _BTextViewSupportBuffer_<T>::~_BTextViewSupportBuffer_()
{ {
free(fItems); free(fItems);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
template <class T> template <class T>
void _BTextViewSupportBuffer_<T>::InsertItemsAt(int32 offset, int32 count, void _BTextViewSupportBuffer_<T>::InsertItemsAt(int32 offset, int32 count,
const T *items) const T *items)
{ {
if (fPhysicalSize < fCount + count) if (fPhysicalSize < fCount + count)
{ {
int32 new_size = (((fCount + count) / fBlockSize) + 1) * fBlockSize; int32 new_size = (((fCount + count) / fBlockSize) + 1) * fBlockSize;
fItems = realloc(fItems, new_size); fItems = realloc(fItems, new_size);
} }
memcpy(fItems + offset, items, count); memcpy(fItems + offset, items, count);
fCount += count; fCount += count;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
template <class T> template <class T>
void _BTextViewSupportBuffer_<T>::RemoveItemsAt(int32 offset, int32 count) void _BTextViewSupportBuffer_<T>::RemoveItemsAt(int32 offset, int32 count)
{ {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/* /*
* $Log $ * $Log $
* *
* $Id $ * $Id $
* *
*/ */