mirror of
https://github.com/rvtr/ctr_card_test.git
synced 2025-06-19 07:05:33 -04:00
・VariableValueを修正
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_card_test@4 ff8ce827-af98-4349-adb5-4c00699b5328
This commit is contained in:
parent
0354858d93
commit
2ee8f18481
@ -678,7 +678,12 @@ void VariableSelector::Show(Display& display)
|
|||||||
display.Draw(x, y + cursor_position, cursor, FontSize, false); // とりあえず、
|
display.Draw(x, y + cursor_position, cursor, FontSize, false); // とりあえず、
|
||||||
|
|
||||||
// 編集可能リストで、編集モードの場合は下にカーソルを表示する
|
// 編集可能リストで、編集モードの場合は下にカーソルを表示する
|
||||||
|
if( EditMode )
|
||||||
|
{
|
||||||
|
int label_width = (GetItemName(i).size() - 1) * FontSize; // カーソル分の -1
|
||||||
|
int cursor_width_from_right = selector::items[selector::current_item]->GetFigure() * FontSize;
|
||||||
|
display.Draw(x + Offset + label_width - cursor_width_from_right , y + cursor_position + LineHeight, "^");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
display.Draw(x + Offset, y + (i * LineHeight * 2), GetItemName(i) );
|
display.Draw(x + Offset, y + (i * LineHeight * 2), GetItemName(i) );
|
||||||
}
|
}
|
||||||
|
@ -462,7 +462,7 @@ public:
|
|||||||
virtual void Decrement() = 0;
|
virtual void Decrement() = 0;
|
||||||
virtual void ShiftLeft() = 0;
|
virtual void ShiftLeft() = 0;
|
||||||
virtual void ShiftRight() = 0;
|
virtual void ShiftRight() = 0;
|
||||||
|
virtual int GetFigure(void) = 0;
|
||||||
virtual string ToString() = 0;
|
virtual string ToString() = 0;
|
||||||
bool Editable; // 新規追加
|
bool Editable; // 新規追加
|
||||||
};
|
};
|
||||||
@ -537,6 +537,7 @@ public:
|
|||||||
virtual void Decrement();
|
virtual void Decrement();
|
||||||
virtual void ShiftLeft();
|
virtual void ShiftLeft();
|
||||||
virtual void ShiftRight();
|
virtual void ShiftRight();
|
||||||
|
virtual int GetFigure(void);
|
||||||
private:
|
private:
|
||||||
vector<T> values;
|
vector<T> values;
|
||||||
int currentIndex;
|
int currentIndex;
|
||||||
@ -678,7 +679,11 @@ void SelectableValue<T>::ShiftRight()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
int SelectableValue<T>::GetFigure(void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -701,6 +706,7 @@ public:
|
|||||||
virtual void Decrement();
|
virtual void Decrement();
|
||||||
virtual void ShiftLeft();
|
virtual void ShiftLeft();
|
||||||
virtual void ShiftRight();
|
virtual void ShiftRight();
|
||||||
|
virtual int GetFigure(void);
|
||||||
void SetValue(T value);
|
void SetValue(T value);
|
||||||
void SetShiftRange(int high, int low);
|
void SetShiftRange(int high, int low);
|
||||||
void SetShiftBitSize(int size);
|
void SetShiftBitSize(int size);
|
||||||
@ -716,7 +722,7 @@ template<typename T>
|
|||||||
VariableValue<T>::VariableValue()
|
VariableValue<T>::VariableValue()
|
||||||
{
|
{
|
||||||
value = 0;
|
value = 0;
|
||||||
figure = 1;
|
figure = 0;
|
||||||
shift_range_h = 0;
|
shift_range_h = 0;
|
||||||
shift_range_l = 0;
|
shift_range_l = 0;
|
||||||
shift_size = 0;
|
shift_size = 0;
|
||||||
@ -735,78 +741,89 @@ void VariableValue<T>::SetValue(T value)
|
|||||||
this->value = value;
|
this->value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// インクリメント
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::Increment()
|
void VariableValue<T>::Increment()
|
||||||
{
|
{
|
||||||
u64 amount = 1 << (figure * shift_size);
|
T amount = (T)1 << (figure * shift_size);
|
||||||
|
|
||||||
if( (value + amount) > 0 )
|
if( (value + amount) > 0 )
|
||||||
{
|
{
|
||||||
value = value + amount;
|
value = value + amount;
|
||||||
NN_TLOG_("Increment value : %08x_%08x\n", (value >> 32), value );
|
NN_TLOG_("Increment value : 0x%08x_%08x (size : %08x%08x\n)", (u32)(value >> 32), (u32)(value & 0xffffffff), (u32)(amount >> 32), (u32)amount );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// デクリメント
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::Decrement()
|
void VariableValue<T>::Decrement()
|
||||||
{
|
{
|
||||||
u64 amount = 1 << (figure * shift_size);
|
T amount = (T)1 << (figure * shift_size);
|
||||||
|
|
||||||
if( value >= amount )
|
if( value >= amount )
|
||||||
{
|
{
|
||||||
value = value - amount;
|
value = value - amount;
|
||||||
NN_TLOG_("Decrement value : %08x_%08x\n", (value >> 32), value );
|
NN_TLOG_("Decrement value : 0x%08x_%08x (size : %08x%08x\n)", (u32)(value >> 32), (u32)(value & 0xffffffff), (u32)(amount >> 32), (u32)amount );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 桁を←にシフト
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::ShiftLeft()
|
void VariableValue<T>::ShiftLeft()
|
||||||
{
|
{
|
||||||
if( shift_range_h >= (figure + 1) )
|
if( shift_range_h > (figure + 1) )
|
||||||
{
|
{
|
||||||
figure += 1;
|
figure += 1;
|
||||||
NN_TLOG_("Shift Left : 0x%08x(%d)\n", (1<<(figure*shift_size)), figure);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 桁を→にシフト
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::ShiftRight()
|
void VariableValue<T>::ShiftRight()
|
||||||
{
|
{
|
||||||
if( shift_range_l <= (figure - 1) )
|
if( shift_range_l <= (figure - 1) )
|
||||||
{
|
{
|
||||||
figure -= 1;
|
figure -= 1;
|
||||||
NN_TLOG_("Shift Right : 0x%08x(%d)\n", (1<<(figure*shift_size)), figure);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ToString
|
||||||
template<typename T>
|
template<typename T>
|
||||||
string VariableValue<T>::ToString()
|
string VariableValue<T>::ToString()
|
||||||
{
|
{
|
||||||
ostringstream oss;
|
ostringstream oss;
|
||||||
// oss << (value >> 32) << "_" << (value & 0xffffffff) << "h";
|
oss.fill('0');
|
||||||
oss << "0x" << setw(8) << hex << left << (value >> 32);
|
oss << "0x" << setw(shift_range_h) << hex << right << value;
|
||||||
oss << "_";
|
|
||||||
oss << setw(8) << hex << left << value;
|
|
||||||
return oss.str();
|
return oss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// シフト可能範囲の設定
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::SetShiftRange(int high, int low)
|
void VariableValue<T>::SetShiftRange(int high, int low)
|
||||||
{
|
{
|
||||||
this->shift_range_h = high;
|
this->shift_range_h = high;
|
||||||
this->shift_range_l = low;
|
this->shift_range_l = low;
|
||||||
|
this->figure = low;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 一度にシフトするビットサイズ
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::SetShiftBitSize(int size)
|
void VariableValue<T>::SetShiftBitSize(int size)
|
||||||
{
|
{
|
||||||
this->shift_size = size;
|
this->shift_size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 現在の桁を返す
|
||||||
|
template<typename T>
|
||||||
|
int VariableValue<T>::GetFigure()
|
||||||
|
{
|
||||||
|
return figure;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::Next(bool loop)
|
void VariableValue<T>::Next(bool loop)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void VariableValue<T>::Previous(bool loop)
|
void VariableValue<T>::Previous(bool loop)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user