kicad-source/eeschema/multiline_pin_text.h
Seth Hillbrand f66cbaf43a ADDED: Stacked pin notation support
Implement bracket notation for stacked pins ([1,2,3], [1-4], [1,3,5-7]).
Automatic net naming proceeds based on the smallest logical pin number
in stacked groups.

Provide explode/reform commands in symbol editor for conversion.
Supports arbitrary ranges including BGA alphanum ranges like
[AA1-AA3,CD14-CD22]

Adds some additional QA and trace logging

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2004
2025-09-07 14:59:51 -07:00

41 lines
1.6 KiB
C

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright The KiCad Developers
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one at
* http://www.gnu.org/licenses/
*/
#pragma once
#include <wx/string.h>
#include <wx/arrstr.h>
#include <math/vector2d.h>
#include <font/text_attributes.h>
struct MULTILINE_PIN_TEXT_LAYOUT
{
bool m_IsMultiLine = false; // true if brace-wrapped multi-line stacked list
wxArrayString m_Lines; // individual numbered lines (trimmed)
VECTOR2D m_StartPos; // position used for line index 0 after alignment shift
int m_LineSpacing = 0; // inter-line spacing in IU (along secondary axis)
};
// Compute layout for a (possibly) multi-line stacked pin number string. If not multi-line, the
// returned layout has m_IsMultiLine=false and no further adjustments are required.
MULTILINE_PIN_TEXT_LAYOUT ComputeMultiLinePinNumberLayout( const wxString& aText,
const VECTOR2D& aAnchorPos, const TEXT_ATTRIBUTES& aAttrs );