Exemplo n.º 1
0
        private void LuaListView_QueryItemImage(int index, RollColumn column, ref Bitmap bitmap, ref int offsetX, ref int offsetY)
        {
            if (column.Name != IconColumnName)
            {
                return;
            }

            if (LuaImp.ScriptList[index].IsSeparator)
            {
                return;
            }

            if (LuaImp.ScriptList[index].Paused)
            {
                bitmap = Properties.Resources.Pause;
            }
            else if (LuaImp.ScriptList[index].Enabled)
            {
                bitmap = Properties.Resources.ts_h_arrow_green;
            }
            else
            {
                bitmap = Properties.Resources.StopButton;
            }
        }
Exemplo n.º 2
0
        private void MarkerView_QueryItemBkColor(int index, RollColumn column, ref Color color)
        {
            var prev = Markers.PreviousOrCurrent(Tastudio.Emulator.Frame);

            if (prev != null && index == Markers.IndexOf(prev))
            {
                // feos: taseditor doesn't have it, so we're free to set arbitrary color scheme. and I prefer consistency
                color = TAStudio.CurrentFrame_InputLog;
            }
            else if (index < Markers.Count)
            {
                var marker = Markers[index];
                var record = Tastudio.CurrentTasMovie[marker.Frame];

                if (record.Lagged.HasValue)
                {
                    if (record.Lagged.Value)
                    {
                        color = column.Name == "FrameColumn" ? TAStudio.LagZone_FrameCol : TAStudio.LagZone_InputLog;
                    }
                    else
                    {
                        color = column.Name == "LabelColumn" ? TAStudio.GreenZone_FrameCol : TAStudio.GreenZone_InputLog;
                    }
                }
            }
        }
Exemplo n.º 3
0
        private void MarkerView_QueryItemBkColor(int index, RollColumn column, ref Color color)
        {
            // This could happen if the control is told to redraw while Tastudio is rebooting, as we would not have a TasMovie just yet
            if (Tastudio.CurrentTasMovie == null)
            {
                return;
            }

            var prev = Markers.PreviousOrCurrent(Tastudio.Emulator.Frame);

            if (prev != null && index == Markers.IndexOf(prev))
            {
                // feos: taseditor doesn't have it, so we're free to set arbitrary color scheme. and I prefer consistency
                color = TAStudio.CurrentFrame_InputLog;
            }
            else if (index < Markers.Count)
            {
                var marker = Markers[index];
                var record = Tastudio.CurrentTasMovie[marker.Frame];

                if (record.Lagged.HasValue)
                {
                    if (record.Lagged.Value)
                    {
                        color = column.Name == "FrameColumn" ? TAStudio.LagZone_FrameCol : TAStudio.LagZone_InputLog;
                    }
                    else
                    {
                        color = column.Name == "LabelColumn" ? TAStudio.GreenZone_FrameCol : TAStudio.GreenZone_InputLog;
                    }
                }
            }
        }
Exemplo n.º 4
0
		private void ListView_QueryItemBkColor(int index, RollColumn column, ref Color color)
		{
			if ((_searches.Count > 0) && (index < _searches.Count))
			{
				var nextColor = Color.White;

				var isCheat = MainForm.CheatList.IsActive(_settings.Domain, _searches[index].Address);
				var isWeeded = Settings.PreviewMode && !_forcePreviewClear && _searches.Preview(_searches[index].Address);

				if (!_searches[index].IsValid)
				{
					nextColor = Color.PeachPuff;
				}
				else if (isCheat)
				{
					nextColor = isWeeded ? Color.Lavender : Color.LightCyan;
				}
				else
				{
					if (isWeeded)
					{
						nextColor = Color.Pink;
					}
				}

				color = nextColor;
			}
		}
Exemplo n.º 5
0
        private void CalculateHorizontalColumnPositions(List <RollColumn> visibleColumns)
        {
            if (_horizontalColumnTops == null || _horizontalColumnTops.Length != visibleColumns.Count + 1)
            {
                _horizontalColumnTops = new int[visibleColumns.Count + 1];
            }

            int top      = 0;
            int startRow = FirstVisibleRow;

            for (int j = 0; j < visibleColumns.Count; j++)
            {
                RollColumn col    = visibleColumns[j];
                int        height = CellHeight;
                if (col.Rotatable && col.RotatedHeight != null)
                {
                    height = Math.Max(height, col.RotatedHeight.Value);
                }
                else if (col.Rotatable)
                {
                    int strOffsetX = 0;
                    int strOffsetY = 0;
                    QueryItemText(startRow, col, out var text, ref strOffsetX, ref strOffsetY);
                    int textWidth = (int)_renderer.MeasureString(text, Font).Width;
                    height = Math.Max(height, textWidth + (CellWidthPadding * 2));
                }
                _horizontalColumnTops[j] = top;
                top += height;
            }
            _horizontalColumnTops[visibleColumns.Count] = top;
        }
Exemplo n.º 6
0
 private void AddColumn(RollColumn column)
 {
     if (TasView.AllColumns[column.Name] == null)
     {
         TasView.AllColumns.Add(column);
     }
 }
Exemplo n.º 7
0
        private void QueryItemBkColor(int index, RollColumn column, ref Color color)
        {
            TasBranch branch = GetBranch(index);

            if (branch != null)
            {
                var record = Movie[branch.Frame];
                if (index == Movie.CurrentBranch)
                {
                    color = TAStudio.CurrentFrame_InputLog;
                }
                else if (record.Lagged.HasValue)
                {
                    color = record.Lagged.Value
                                                ? TAStudio.LagZone_InputLog
                                                : TAStudio.GreenZone_InputLog;
                }
            }

            // Highlight the branch cell a little, if hovering over it
            if (BranchView.CurrentCellIsDataCell &&
                BranchView.CurrentCell.Column.Name == BranchNumberColumnName &&
                column.Name == BranchNumberColumnName &&
                index == BranchView.CurrentCell.RowIndex)
            {
                color = Color.FromArgb((byte)(color.A - 24), (byte)(color.R - 24), (byte)(color.G - 24), (byte)(color.B - 24));
            }
        }
Exemplo n.º 8
0
        private void WatchListView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";
            if (index >= _watches.Count)
            {
                return;
            }

            if (_watches[index].IsSeparator)
            {
                if (column.Name == WatchList.Address)
                {
                    text = _watches[index].Notes;
                }

                return;
            }

            switch (column.Name)
            {
            case WatchList.Address:
                text = _watches[index].AddressString;
                break;

            case WatchList.Value:
                text = _watches[index].ValueString;
                break;

            case WatchList.Prev:
                text = _watches[index].PreviousStr;
                break;

            case WatchList.ChangesCol:
                if (!_watches[index].IsSeparator)
                {
                    text = _watches[index].ChangeCount.ToString();
                }

                break;

            case WatchList.Diff:
                text = _watches[index].Diff;
                break;

            case WatchList.Type:
                text = ComputeDisplayType(_watches[index]);
                break;

            case WatchList.Domain:
                text = _watches[index].Domain.Name;
                break;

            case WatchList.Notes:
                text = _watches[index].Notes;
                break;
            }
        }
Exemplo n.º 9
0
 private void DisassemblerView_QueryItemBkColor(int index, RollColumn column, ref Color color)
 {
     if (_disassemblyLines.Any() && index < _disassemblyLines.Count)
     {
         if (_disassemblyLines[index].Address == _currentDisassemblerAddress)
         {
             color = Color.LightCyan;
         }
     }
 }
Exemplo n.º 10
0
 private void HistoryView_QueryItemBkColor(int index, RollColumn column, ref Color color)
 {
     if (index == Log.UndoIndex)
     {
         color = TAStudio.GreenZone_InputLog;
     }
     else if (index > Log.UndoIndex)
     {
         color = TAStudio.LagZone_InputLog;
     }
 }
Exemplo n.º 11
0
        private void MarkerView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";

            if (column.Name == "FrameColumn")
            {
                text = Markers[index].Frame.ToString();
            }
            else if (column.Name == "LabelColumn")
            {
                text = Markers[index].Message;
            }
        }
Exemplo n.º 12
0
        private void OrderColumn(RollColumn column)
        {
            if (column.Name != _sortedColumn)
            {
                _sortReverse = false;
            }

            _watches.OrderWatches(column.Name, _sortReverse);

            _sortedColumn = column.Name;
            _sortReverse ^= true;
            WatchListView.Refresh();
        }
Exemplo n.º 13
0
 private void CheatListView_QueryItemBkColor(int index, RollColumn column, ref Color color)
 {
     if (index < MainForm.CheatList.Count)
     {
         if (MainForm.CheatList[index].IsSeparator)
         {
             color = BackColor;
         }
         else if (MainForm.CheatList[index].Enabled)
         {
             color = Color.LightCyan;
         }
     }
 }
Exemplo n.º 14
0
 private void LuaListView_QueryItemBkColor(int index, RollColumn column, ref Color color)
 {
     if (LuaImp.ScriptList[index].IsSeparator)
     {
         color = BackColor;
     }
     else if (LuaImp.ScriptList[index].Enabled && !LuaImp.ScriptList[index].Paused)
     {
         color = Color.LightCyan;
     }
     else if (LuaImp.ScriptList[index].Enabled && LuaImp.ScriptList[index].Paused)
     {
         color = Color.LightPink;
     }
 }
Exemplo n.º 15
0
        private void DisassemblerView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";

            if (index < _disassemblyLines.Count)
            {
                if (column.Name == AddressColumnName)
                {
                    text = _disassemblyLines[index].Address.ToHexString(_pcRegisterSize);
                }
                else if (column.Name == InstructionColumnName)
                {
                    text = _disassemblyLines[index].Mnemonic;
                }
            }
        }
Exemplo n.º 16
0
        private void TraceView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";
            if (index < _instructions.Count)
            {
                switch (column.Name)
                {
                case DisasmColumnName:
                    text = _instructions[index].Disassembly.TrimEnd();
                    break;

                case RegistersColumnName:
                    text = _instructions[index].RegisterInfo;
                    break;
                }
            }
        }
Exemplo n.º 17
0
        private void LuaListView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";

            if (LuaImp.ScriptList[index].IsSeparator)
            {
                return;
            }

            if (column.Name == ScriptColumnName)
            {
                text = Path.GetFileNameWithoutExtension(LuaImp.ScriptList[index].Path);                 // TODO: how about allow the user to name scripts?
            }
            else if (column.Name == PathColumnName)
            {
                text = DressUpRelative(LuaImp.ScriptList[index].Path);
            }
        }
Exemplo n.º 18
0
        private void MarkerView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";

            // This could happen if the control is told to redraw while Tastudio is rebooting, as we would not have a TasMovie just yet
            if (Tastudio.CurrentTasMovie == null)
            {
                return;
            }

            if (column.Name == "FrameColumn")
            {
                text = Markers[index].Frame.ToString();
            }
            else if (column.Name == "LabelColumn")
            {
                text = Markers[index].Message;
            }
        }
Exemplo n.º 19
0
        private void WatchListView_QueryItemBkColor(int index, RollColumn column, ref Color color)
        {
            if (index >= _watches.Count)
            {
                return;
            }

            if (_watches[index].IsSeparator)
            {
                color = BackColor;
            }
            else if (!_watches[index].IsValid)
            {
                color = Color.PeachPuff;
            }
            else if (MainForm.CheatList.IsActive(_watches[index].Domain, _watches[index].Address))
            {
                color = Color.LightCyan;
            }
        }
Exemplo n.º 20
0
		private void ListView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
		{
			text = "";

			if (index >= _searches.Count)
			{
				return;
			}

			var columnName = column.Name;
			text = columnName switch
			{
				WatchList.Address => _searches[index].AddressString,
				WatchList.Value => _searches[index].ValueString,
				WatchList.Prev => _searches[index].PreviousStr,
				WatchList.ChangesCol => _searches[index].ChangeCount.ToString(),
				WatchList.Diff => _searches[index].Diff,
				_ => text
			};
		}
Exemplo n.º 21
0
        private void QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";

            if (index >= Movie.BranchCount)
            {
                return;
            }

            switch (column.Name)
            {
            case BranchNumberColumnName:
                text = index.ToString();
                break;

            case FrameColumnName:
                text = GetBranch(index).Frame.ToString();
                break;

            case UserTextColumnName:
                text = GetBranch(index).UserText;
                break;
            }
        }
Exemplo n.º 22
0
        private void DrawData(List <RollColumn> visibleColumns)
        {
            // Prevent exceptions with small TAStudio windows
            if (visibleColumns.Count == 0)
            {
                return;
            }

            if (QueryItemText != null)
            {
                if (HorizontalOrientation)
                {
                    int startRow = FirstVisibleRow;
                    int range    = Math.Min(LastVisibleRow, RowCount - 1) - startRow + 1;

                    _renderer.PrepDrawString(_font, _foreColor);
                    int lastVisible = LastVisibleColumnIndex;
                    for (int j = FirstVisibleColumn; j <= lastVisible; j++)
                    {
                        RollColumn col       = visibleColumns[j];
                        int        colHeight = GetHColHeight(j);

                        for (int i = 0, f = 0; f < range; i++, f++)
                        {
                            f += _lagFrames[i];

                            int baseX = RowsToPixels(i) + (col.Rotatable ? CellWidth : 0);
                            int baseY = GetHColTop(j) - _vBar.Value;

                            if (!col.Rotatable)
                            {
                                Bitmap image         = null;
                                int    bitmapOffsetX = 0;
                                int    bitmapOffsetY = 0;

                                QueryItemIcon?.Invoke(f + startRow, col, ref image, ref bitmapOffsetX, ref bitmapOffsetY);

                                if (image != null)
                                {
                                    int x = baseX + CellWidthPadding + bitmapOffsetX;
                                    int y = baseY + CellHeightPadding + bitmapOffsetY;
                                    _renderer.DrawBitmap(image, new Point(x, y));
                                }
                            }

                            string text;
                            int    strOffsetX = 0;
                            int    strOffsetY = 0;
                            QueryItemText(f + startRow, col, out text, ref strOffsetX, ref strOffsetY);

                            int textWidth = _renderer.MeasureString(text, _font).Width;
                            if (col.Rotatable)
                            {
                                // Center Text
                                int textX = Math.Max(((colHeight - textWidth) / 2), CellWidthPadding) + strOffsetX;
                                int textY = CellWidthPadding + strOffsetY;
                                var point = new Point(baseX - textY, baseY + textX);

                                _renderer.PrepDrawString(_font, _foreColor, rotate: true);
                                DrawString(text, null, point);
                                _renderer.PrepDrawString(_font, _foreColor, rotate: false);
                            }
                            else
                            {
                                // Center Text
                                int textX = Math.Max(((CellWidth - textWidth) / 2), CellWidthPadding) + strOffsetX;
                                int textY = CellHeightPadding + strOffsetY;
                                var point = new Point(baseX + textX, baseY + textY);

                                DrawString(text, ColumnWidth, point);
                            }
                        }
                    }
                }
                else
                {
                    int startRow = FirstVisibleRow;
                    int range    = Math.Min(LastVisibleRow, RowCount - 1) - startRow + 1;

                    _renderer.PrepDrawString(_font, _foreColor);
                    int xPadding = CellWidthPadding + 1 - _hBar.Value;
                    for (int i = 0, f = 0; f < range; i++, f++)                     // Vertical
                    {
                        f += _lagFrames[i];
                        int lastVisible = LastVisibleColumnIndex;
                        for (int j = FirstVisibleColumn; j <= lastVisible; j++)                         // Horizontal
                        {
                            RollColumn col = visibleColumns[j];

                            string text;
                            int    strOffsetX = 0;
                            int    strOffsetY = 0;
                            Point  point      = new Point(col.Left.Value + xPadding, RowsToPixels(i) + CellHeightPadding);

                            Bitmap image         = null;
                            int    bitmapOffsetX = 0;
                            int    bitmapOffsetY = 0;

                            QueryItemIcon?.Invoke(f + startRow, visibleColumns[j], ref image, ref bitmapOffsetX, ref bitmapOffsetY);

                            if (image != null)
                            {
                                _renderer.DrawBitmap(image, new Point(point.X + bitmapOffsetX, point.Y + bitmapOffsetY + CellHeightPadding));
                            }

                            QueryItemText(f + startRow, visibleColumns[j], out text, ref strOffsetX, ref strOffsetY);

                            bool rePrep = false;
                            if (_selectedItems.Contains(new Cell {
                                Column = visibleColumns[j], RowIndex = f + startRow
                            }))
                            {
                                _renderer.PrepDrawString(_font, SystemColors.HighlightText);
                                rePrep = true;
                            }

                            DrawString(text, col.Width, new Point(point.X + strOffsetX, point.Y + strOffsetY));

                            if (rePrep)
                            {
                                _renderer.PrepDrawString(_font, _foreColor);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 23
0
        private void CheatListView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            text = "";
            if (index >= MainForm.CheatList.Count || MainForm.CheatList[index].IsSeparator)
            {
                return;
            }

            var columnName = column.Name;

            switch (columnName)
            {
            case NameColumn:
                text = MainForm.CheatList[index].Name;
                break;

            case AddressColumn:
                text = MainForm.CheatList[index].AddressStr;
                break;

            case ValueColumn:
                text = MainForm.CheatList[index].ValueStr;
                break;

            case CompareColumn:
                text = MainForm.CheatList[index].CompareStr;
                break;

            case OnColumn:
                text = MainForm.CheatList[index].Enabled ? "*" : "";
                break;

            case DomainColumn:
                text = MainForm.CheatList[index].Domain.Name;
                break;

            case SizeColumn:
                text = MainForm.CheatList[index].Size.ToString();
                break;

            case EndianColumn:
                text = (MainForm.CheatList[index].BigEndian ?? false) ? "Big" : "Little";
                break;

            case TypeColumn:
                text = Watch.DisplayTypeToString(MainForm.CheatList[index].Type);
                break;

            case ComparisonTypeColumn:
                text = MainForm.CheatList[index].ComparisonType switch
                {
                    Cheat.CompareType.None => "",
                    Cheat.CompareType.Equal => "=",
                    Cheat.CompareType.GreaterThan => ">",
                    Cheat.CompareType.GreaterThanOrEqual => ">=",
                    Cheat.CompareType.LessThan => "<",
                    Cheat.CompareType.LessThanOrEqual => "<=",
                    Cheat.CompareType.NotEqual => "!=",
                    _ => ""
                };

                break;
            }
        }
Exemplo n.º 24
0
        private void GDIP_DrawData(PaintEventArgs e, List <RollColumn> visibleColumns)
        {
            // Prevent exceptions with small TAStudio windows
            if (visibleColumns.Count == 0)
            {
                return;
            }

            bool isRotated = false;

            if (QueryItemText != null)
            {
                if (HorizontalOrientation)
                {
                    int startRow = FirstVisibleRow;
                    int range    = Math.Min(LastVisibleRow, RowCount - 1) - startRow + 1;

                    sBrush = new SolidBrush(_foreColor);
                    for (int i = 0, f = 0; f < range; i++, f++)
                    {
                        f += _lagFrames[i];
                        int LastVisible = LastVisibleColumnIndex;
                        for (int j = FirstVisibleColumn; j <= LastVisible; j++)
                        {
                            Bitmap image         = null;
                            int    x             = 0;
                            int    y             = 0;
                            int    bitmapOffsetX = 0;
                            int    bitmapOffsetY = 0;

                            QueryItemIcon?.Invoke(f + startRow, visibleColumns[j], ref image, ref bitmapOffsetX, ref bitmapOffsetY);

                            if (image != null)
                            {
                                x = RowsToPixels(i) + CellWidthPadding + bitmapOffsetX;
                                y = (j * CellHeight) + (CellHeightPadding * 2) + bitmapOffsetY;
                                e.Graphics.DrawImage(image, new Point(x, y));
                            }

                            string text;
                            int    strOffsetX = 0;
                            int    strOffsetY = 0;
                            QueryItemText(f + startRow, visibleColumns[j], out text, ref strOffsetX, ref strOffsetY);

                            // Center Text
                            x = RowsToPixels(i) + ((CellWidth - (int)Math.Round((text.Length * _charSizeF.Width))) / 2);
                            y = (j * CellHeight) + CellHeightPadding - _vBar.Value;
                            var point = new Point(x + strOffsetX, y + strOffsetY);

                            var rePrep = false;
                            if (j == 1)
                            {
                                if (_selectedItems.Contains(new Cell {
                                    Column = visibleColumns[j], RowIndex = i + startRow
                                }))
                                {
                                    isRotated = true;
                                    sBrush    = new SolidBrush(SystemColors.HighlightText);
                                    rePrep    = true;
                                }
                                else if (j == 1)
                                {
                                    // 1. not sure about this; 2. repreps may be excess, but if we render one column at a time, we do need to change back after rendering the header
                                    rePrep    = true;
                                    isRotated = true;
                                    sBrush    = new SolidBrush(SystemColors.HighlightText);
                                }
                            }

                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                //_gdi.DrawString(text, point);
                                if (isRotated)
                                {
                                    SizeF sz = e.Graphics.VisibleClipBounds.Size;
                                    e.Graphics.TranslateTransform(sz.Width / 2, sz.Height / 2);
                                    e.Graphics.RotateTransform(90);
                                    sz = e.Graphics.MeasureString(text, _commonFont);
                                    e.Graphics.DrawString(text, _commonFont, sBrush, -(sz.Width / 2), -(sz.Height / 2));
                                }
                                else
                                {
                                    //e.Graphics.DrawString(text, _commonFont, sBrush, (PointF)point);
                                    GDIP_DrawString(e, text, _commonFont, point, new Pen(sBrush).Color);
                                }
                            }

                            if (rePrep)
                            {
                                isRotated = false;
                                sBrush    = new SolidBrush(_foreColor);
                            }
                        }
                    }
                }
                else
                {
                    int startRow = FirstVisibleRow;
                    int range    = Math.Min(LastVisibleRow, RowCount - 1) - startRow + 1;

                    sBrush = new SolidBrush(_foreColor);

                    int xPadding = CellWidthPadding + 1 - _hBar.Value;
                    for (int i = 0, f = 0; f < range; i++, f++)                     // Vertical
                    {
                        f += _lagFrames[i];
                        int LastVisible = LastVisibleColumnIndex;
                        for (int j = FirstVisibleColumn; j <= LastVisible; j++)                         // Horizontal
                        {
                            RollColumn col = visibleColumns[j];

                            string text;
                            int    strOffsetX = 0;
                            int    strOffsetY = 0;
                            Point  point      = new Point(col.Left.Value + xPadding, RowsToPixels(i) + CellHeightPadding);

                            Bitmap image         = null;
                            int    bitmapOffsetX = 0;
                            int    bitmapOffsetY = 0;

                            QueryItemIcon?.Invoke(f + startRow, visibleColumns[j], ref image, ref bitmapOffsetX, ref bitmapOffsetY);

                            if (image != null)
                            {
                                e.Graphics.DrawImage(image, new Point(point.X + bitmapOffsetX, point.Y + bitmapOffsetY + CellHeightPadding));
                            }

                            QueryItemText(f + startRow, visibleColumns[j], out text, ref strOffsetX, ref strOffsetY);

                            bool rePrep = false;
                            if (_selectedItems.Contains(new Cell {
                                Column = visibleColumns[j], RowIndex = f + startRow
                            }))
                            {
                                sBrush    = new SolidBrush(SystemColors.HighlightText);
                                isRotated = false;
                                rePrep    = true;
                            }

                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                //e.Graphics.DrawString(text, _commonFont, sBrush, (PointF)(new Point(point.X + strOffsetX, point.Y + strOffsetY)));
                                GDIP_DrawString(e, text, _commonFont, new Point(point.X + strOffsetX, point.Y + strOffsetY), new Pen(sBrush).Color);
                            }

                            if (rePrep)
                            {
                                isRotated = false;
                                sBrush    = new SolidBrush(_foreColor);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 25
0
        private void lvCDL_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
        {
            var subItem = lvCDL.AllColumns.IndexOf(column);

            text = listContents[index][subItem];
        }
Exemplo n.º 26
0
        private void DrawData(List <RollColumn> visibleColumns, int firstVisibleRow, int lastVisibleRow)
        {
            if (QueryItemText == null)
            {
                return;
            }

            if (!visibleColumns.Any())
            {
                return;
            }

            int startRow = firstVisibleRow;
            int range    = Math.Min(lastVisibleRow, RowCount - 1) - startRow + 1;

            _renderer.PrepDrawString(Font, _foreColor);

            if (HorizontalOrientation)
            {
                for (int j = 0; j < visibleColumns.Count; j++)
                {
                    RollColumn col       = visibleColumns[j];
                    int        colHeight = GetHColHeight(j);

                    for (int i = 0, f = 0; f < range; i++, f++)
                    {
                        f += _lagFrames[i];

                        int baseX = RowsToPixels(i) + (col.Rotatable ? CellWidth : 0);
                        int baseY = GetHColTop(j) - _vBar.Value;

                        if (!col.Rotatable)
                        {
                            Bitmap image         = null;
                            int    bitmapOffsetX = 0;
                            int    bitmapOffsetY = 0;

                            QueryItemIcon?.Invoke(f + startRow, col, ref image, ref bitmapOffsetX, ref bitmapOffsetY);

                            if (image != null)
                            {
                                int x = baseX + CellWidthPadding + bitmapOffsetX;
                                int y = baseY + CellHeightPadding + bitmapOffsetY;
                                _renderer.DrawBitmap(image, new Point(x, y));
                            }
                        }

                        int strOffsetX = 0;
                        int strOffsetY = 0;
                        QueryItemText(f + startRow, col, out var text, ref strOffsetX, ref strOffsetY);

                        int textWidth = (int)_renderer.MeasureString(text, Font).Width;
                        if (col.Rotatable)
                        {
                            // Center Text
                            int textX = Math.Max(((colHeight - textWidth) / 2), CellWidthPadding) + strOffsetX;
                            int textY = CellWidthPadding + strOffsetY;

                            _renderer.PrepDrawString(Font, _foreColor, rotate: true);
                            DrawString(text, new Rectangle(baseX - textY, baseY + textX, 999, CellHeight));
                            _renderer.PrepDrawString(Font, _foreColor, rotate: false);
                        }
                        else
                        {
                            // Center Text
                            int textX = Math.Max(((CellWidth - textWidth) / 2), CellWidthPadding) + strOffsetX;
                            int textY = CellHeightPadding + strOffsetY;

                            DrawString(text, new Rectangle(baseX + textX, baseY + textY, MaxColumnWidth, CellHeight));
                        }
                    }
                }
            }
            else
            {
                int xPadding = CellWidthPadding + 1 - _hBar.Value;
                for (int i = 0, f = 0; f < range; i++, f++)                 // Vertical
                {
                    f += _lagFrames[i];
                    foreach (var column in visibleColumns)
                    {
                        RollColumn col = column;

                        int   strOffsetX = 0;
                        int   strOffsetY = 0;
                        Point point      = new Point(col.Left + xPadding, RowsToPixels(i) + CellHeightPadding);

                        Bitmap image         = null;
                        int    bitmapOffsetX = 0;
                        int    bitmapOffsetY = 0;

                        QueryItemIcon?.Invoke(f + startRow, column, ref image, ref bitmapOffsetX, ref bitmapOffsetY);

                        if (image != null)
                        {
                            _renderer.DrawBitmap(image, new Point(point.X + bitmapOffsetX, point.Y + bitmapOffsetY + CellHeightPadding));
                        }

                        QueryItemText(f + startRow, column, out var text, ref strOffsetX, ref strOffsetY);

                        bool rePrep = false;
                        if (_selectedItems.Contains(new Cell {
                            Column = column, RowIndex = f + startRow
                        }))
                        {
                            _renderer.PrepDrawString(Font, SystemColors.HighlightText);
                            rePrep = true;
                        }

                        DrawString(text, new Rectangle(point.X + strOffsetX, point.Y + strOffsetY, col.Width, ColumnHeight));

                        if (rePrep)
                        {
                            _renderer.PrepDrawString(Font, _foreColor);
                        }
                    }
                }
            }
        }
Exemplo n.º 27
0
        private void DrawData(PaintEventArgs e, List <RollColumn> visibleColumns)
        {
            if (QueryItemText != null)
            {
                if (HorizontalOrientation)
                {
                    int startRow = FirstVisibleRow;
                    int range    = Math.Min(LastVisibleRow, RowCount - 1) - startRow + 1;

                    Gdi.PrepDrawString(NormalFont, _foreColor);
                    for (int i = 0, f = 0; f < range; i++, f++)
                    {
                        f += lagFrames[i];
                        int LastVisible = LastVisibleColumnIndex;
                        for (int j = FirstVisibleColumn; j <= LastVisible; j++)
                        {
                            Bitmap image         = null;
                            int    x             = 0;
                            int    y             = 0;
                            int    bitmapOffsetX = 0;
                            int    bitmapOffsetY = 0;

                            if (QueryItemIcon != null)
                            {
                                QueryItemIcon(f + startRow, visibleColumns[j], ref image, ref bitmapOffsetX, ref bitmapOffsetY);
                            }

                            if (image != null)
                            {
                                x = RowsToPixels(i) + CellWidthPadding + bitmapOffsetX;
                                y = (j * CellHeight) + (CellHeightPadding * 2) + bitmapOffsetY;
                                Gdi.DrawBitmap(image, new Point(x, y), true);
                            }

                            string text;
                            int    strOffsetX = 0;
                            int    strOffsetY = 0;
                            QueryItemText(f + startRow, visibleColumns[j], out text, ref strOffsetX, ref strOffsetY);

                            // Center Text
                            x = RowsToPixels(i) + (CellWidth - text.Length * _charSize.Width) / 2;
                            y = (j * CellHeight) + CellHeightPadding - VBar.Value;
                            var point = new Point(x + strOffsetX, y + strOffsetY);

                            var rePrep = false;
                            if (j == 1)
                            {
                                if (SelectedItems.Contains(new Cell {
                                    Column = visibleColumns[j], RowIndex = i + startRow
                                }))
                                {
                                    Gdi.PrepDrawString(RotatedFont, SystemColors.HighlightText);
                                    rePrep = true;
                                }
                                else if (j == 1)
                                {
                                    //1. not sure about this; 2. repreps may be excess, but if we render one column at a time, we do need to change back after rendering the header
                                    rePrep = true;
                                    Gdi.PrepDrawString(RotatedFont, _foreColor);
                                }
                            }



                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                Gdi.DrawString(text, point);
                            }

                            if (rePrep)
                            {
                                Gdi.PrepDrawString(NormalFont, _foreColor);
                            }
                        }
                    }
                }
                else
                {
                    int startRow = FirstVisibleRow;
                    int range    = Math.Min(LastVisibleRow, RowCount - 1) - startRow + 1;

                    Gdi.PrepDrawString(NormalFont, _foreColor);
                    int xPadding = CellWidthPadding + 1 - HBar.Value;
                    for (int i = 0, f = 0; f < range; i++, f++)                     // Vertical
                    {
                        f += lagFrames[i];
                        int LastVisible = LastVisibleColumnIndex;
                        for (int j = FirstVisibleColumn; j <= LastVisible; j++)                         // Horizontal
                        {
                            RollColumn col = visibleColumns[j];

                            string text;
                            int    strOffsetX = 0;
                            int    strOffsetY = 0;
                            Point  point      = new Point(col.Left.Value + xPadding, RowsToPixels(i) + CellHeightPadding);

                            Bitmap image         = null;
                            int    bitmapOffsetX = 0;
                            int    bitmapOffsetY = 0;

                            if (QueryItemIcon != null)
                            {
                                QueryItemIcon(f + startRow, visibleColumns[j], ref image, ref bitmapOffsetX, ref bitmapOffsetY);
                            }

                            if (image != null)
                            {
                                Gdi.DrawBitmap(image, new Point(point.X + bitmapOffsetX, point.Y + bitmapOffsetY + CellHeightPadding), true);
                            }

                            QueryItemText(f + startRow, visibleColumns[j], out text, ref strOffsetX, ref strOffsetY);

                            bool rePrep = false;
                            if (SelectedItems.Contains(new Cell {
                                Column = visibleColumns[j], RowIndex = f + startRow
                            }))
                            {
                                Gdi.PrepDrawString(NormalFont, SystemColors.HighlightText);
                                rePrep = true;
                            }

                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                Gdi.DrawString(text, new Point(point.X + strOffsetX, point.Y + strOffsetY));
                            }

                            if (rePrep)
                            {
                                Gdi.PrepDrawString(NormalFont, _foreColor);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 28
0
 private void HistoryView_QueryItemText(int index, RollColumn column, out string text, ref int offsetX, ref int offsetY)
 {
     text = column.Name == UndoColumnName
                         ? Log.Names[index]
                         : index.ToString();
 }