1 // Copyright (C) 2019 Kazuhiro Fujieda <fujieda@users.osdn.me>
\r
3 // Licensed under the Apache License, Version 2.0 (the "License");
\r
4 // you may not use this file except in compliance with the License.
\r
5 // You may obtain a copy of the License at
\r
7 // http://www.apache.org/licenses/LICENSE-2.0
\r
9 // Unless required by applicable law or agreed to in writing, software
\r
10 // distributed under the License is distributed on an "AS IS" BASIS,
\r
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
12 // See the License for the specific language governing permissions and
\r
13 // limitations under the License.
\r
15 using System.Drawing;
\r
16 using System.Windows.Forms;
\r
18 namespace KancolleSniffer.View
\r
20 public static class StringTruncator
\r
22 public static string Truncate(string target, string postfix, int maxWidth, Font font = null)
\r
24 if (StringWidth(target + postfix, font) <= maxWidth)
\r
27 foreach (var ch in target)
\r
29 var tmp = truncated + ch;
\r
30 if (StringWidth(tmp + postfix, font) > maxWidth)
\r
34 return truncated.TrimEnd(' ');
\r
37 private static readonly Font Font = new Control().Font;
\r
39 private static int StringWidth(string str, Font font)
\r
41 return TextRenderer.MeasureText(str, font ?? Font, new Size(int.MaxValue, int.MaxValue)).Width;
\r