Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/gansm/finalcut
Browse files Browse the repository at this point in the history
  • Loading branch information
gansm committed Aug 18, 2024
2 parents 2e11517 + 2126115 commit 278c63b
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 12 deletions.
35 changes: 30 additions & 5 deletions final/util/fstring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,15 @@ FString::FString (const std::string& s)
internal_assign(internal_toWideString(s));
}

//----------------------------------------------------------------------
#if __cplusplus >= 201703L
FString::FString (const std::string_view& s)
{
if ( ! s.empty() )
internal_assign(internal_toWideString(s));
}
#endif

//----------------------------------------------------------------------
FString::FString (const char s[])
{
Expand Down Expand Up @@ -937,12 +946,8 @@ auto FString::internal_toCharString (const std::wstring& s) const -> std::string
}

//----------------------------------------------------------------------
auto FString::internal_toWideString (const std::string& s) const -> std::wstring
auto FString::internal_toWideString (const char* src) const -> std::wstring
{
if ( s.empty() )
return {};

auto src = s.c_str();
auto state = std::mbstate_t();
auto size = std::mbsrtowcs(nullptr, &src, 0, &state);

Expand All @@ -965,6 +970,26 @@ auto FString::internal_toWideString (const std::string& s) const -> std::wstring
return {};
}

//----------------------------------------------------------------------
auto FString::internal_toWideString (const std::string& s) const -> std::wstring
{
if ( s.empty() )
return {};

return internal_toWideString(s.c_str());
}

//----------------------------------------------------------------------
#if __cplusplus >= 201703L
auto FString::internal_toWideString (const std::string_view& s) const -> std::wstring
{
if ( s.empty() )
return {};

auto src = s.begin();
return internal_toWideString(src);
}
#endif

// FString non-member operators
//----------------------------------------------------------------------
Expand Down
7 changes: 7 additions & 0 deletions final/util/fstring.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ class FString
FString (std::wstring&&); // implicit conversion constructor
FString (const wchar_t[]); // implicit conversion constructor
FString (const std::string&); // implicit conversion constructor
#if __cplusplus >= 201703L
FString (const std::string_view&); // implicit conversion constructor
#endif
FString (const char[]); // implicit conversion constructor
FString (const UniChar&); // implicit conversion constructor
FString (const wchar_t); // implicit conversion constructor
Expand Down Expand Up @@ -511,7 +514,11 @@ class FString
// Methods
void internal_assign (std::wstring);
auto internal_toCharString (const std::wstring&) const -> std::string;
auto internal_toWideString (const char*) const -> std::wstring;
auto internal_toWideString (const std::string&) const -> std::wstring;
#if __cplusplus >= 201703L
auto internal_toWideString (const std::string_view&) const -> std::wstring;
#endif

// Data members
std::wstring string{};
Expand Down
16 changes: 9 additions & 7 deletions final/widget/ftextview.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,14 @@ class FTextView : public FWidget
void initLayout() override;
void adjustSize() override;

// Inquiry
auto isHorizontallyScrollable() const -> bool;
auto isVerticallyScrollable() const -> bool;

// Accessors
auto getTextHeight() const -> std::size_t;
auto getTextWidth() const -> std::size_t;

private:
// Constants
static constexpr auto UNINITIALIZED_ROW = static_cast<FTextViewList::size_type>(-1);
Expand All @@ -250,13 +258,7 @@ class FTextView : public FWidget
// Using-declaration
using KeyMap = std::unordered_map<FKey, std::function<void()>, EnumHash<FKey>>;

// Accessors
auto getTextHeight() const -> std::size_t;
auto getTextWidth() const -> std::size_t;

// Inquiry
auto isHorizontallyScrollable() const -> bool;
auto isVerticallyScrollable() const -> bool;
auto isWithinTextBounds (const FPoint&) const -> bool;
auto isLowerRightResizeCorner (const FPoint&) const -> bool;
auto hasWrongSelectionOrder() const -> bool;
Expand Down Expand Up @@ -371,7 +373,7 @@ inline auto FTextView::getColumns() const noexcept -> std::size_t

//----------------------------------------------------------------------
inline auto FTextView::getRows() const -> std::size_t
{ return std::size_t(data.size()); }
{ return data.size(); }

//----------------------------------------------------------------------
inline auto FTextView::getScrollPos() const -> FPoint
Expand Down

0 comments on commit 278c63b

Please sign in to comment.