From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web08.5623.1631254837561935155 for ; Thu, 09 Sep 2021 23:20:38 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=VbhukXv8; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: zhichao.gao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10102"; a="201199577" X-IronPort-AV: E=Sophos;i="5.85,282,1624345200"; d="scan'208";a="201199577" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2021 23:20:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,282,1624345200"; d="scan'208";a="504940710" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga008.fm.intel.com with ESMTP; 09 Sep 2021 23:20:23 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 9 Sep 2021 23:20:22 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 9 Sep 2021 23:20:22 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 9 Sep 2021 23:20:22 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.172) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 9 Sep 2021 23:20:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n01LJYow/q5qkJuYZrEOGgFQYtmbpHZKW6ErcJJs4vBPkp+73NcpT3+m9eG08P1lRhar/hX2ETPjUHgJpDneeQyBAC/0HXYT2up5DgIPqOoCkkE/H6afnEb4E5AQQXcl0Vi613oP0HsOW5qim/8KFaYHB1eBV8Ldn93D6OqOoyjDu/zBgDVN/duzF6Q5Gq+vK03r9m2eHK0Mdh3Siu7wHOGrogfajK6RqsA07UX4SsoLyjOts4PHAXlMSB7U70VHs1qF8+4U37opoOxXIAZUfgdHi08YkyDmcRzrnne6XsnBbqmZkRb+XcwVoXo+pM7oK4JeaSTIqarzDVRJFPE9HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ttwjnSg9pIGR9Pk5FM7Mrzs38/yU4gqZrHawTGl7Cik=; b=UQAfCJPBG9UNNNx1tl3Qe/YuFiadfZ+JzpokHxupE6dT12ZVVSErw61P0fZ1lWfO30zL/vJBG7nhoJBRFT2HuXeoucQNXnhkiDKY5Op8zdmG04HezTLkwBbKWPIss6se2IIfWOXRiKPlbSofg3X8vHUBRl5eHwYMgk6LN84/fG09L+fHlhl/M+c/IAOM088fbaXJT1IJ+AOksKjoUU/wM76k4N1Ny+JLKwvoTPuyRmNhLuH+sia8Xc5vTVQ5VDloGYHXe7q/HRjDjPAXU+xEMay7v9036Xr+2iAa9M6JXCtED8j28+76J34Q3Hm72i2cMvPi5W5zYgfwiAM+yzcVyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ttwjnSg9pIGR9Pk5FM7Mrzs38/yU4gqZrHawTGl7Cik=; b=VbhukXv8v7laHFCqmDNGKP4Ny/fjJd7vJRpx3gJeIpN1WQWpkjrFarMu4vvnSz3QM8GBZum9icN55T7JDu7UanfX6W9dVThU2dTurSqqrIDaDy0TEVLOQdg47FyFqYVJhfZ7MxYdYQ5vNhupdVgFAAIahr/3ieY7t3aCgptaLVU= Received: from DM4PR11MB5277.namprd11.prod.outlook.com (2603:10b6:5:388::23) by DM5PR11MB1963.namprd11.prod.outlook.com (2603:10b6:3:10e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.15; Fri, 10 Sep 2021 06:20:20 +0000 Received: from DM4PR11MB5277.namprd11.prod.outlook.com ([fe80::fcab:50dd:7598:3b40]) by DM4PR11MB5277.namprd11.prod.outlook.com ([fe80::fcab:50dd:7598:3b40%5]) with mapi id 15.20.4500.017; Fri, 10 Sep 2021 06:20:20 +0000 From: "Gao, Zhichao" To: "Ni, Ray" , "Bi, Dandan" CC: "Wang, Jian J" , Liming Gao , "devel@edk2.groups.io" Subject: Re: [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Topic: [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Index: AQHXpUvsuh5reQxFl0O+Aioo+AtRhaubylYAgAECOEA= Date: Fri, 10 Sep 2021 06:20:20 +0000 Message-ID: References: <20210909072541.3069-1-zhichao.gao@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e21b6004-0719-4090-0084-08d974231111 x-ms-traffictypediagnostic: DM5PR11MB1963: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2958; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VkafeRPTZbTPy/n3OK6559X+IqLxNADEtsOPXgYpKX9knGQzylPsjJKE9dDsslSe6Gi451xojeNeHqfrbSkjE3lCf1P2Dop6vBhn355mBpSSo57HU7J5HO4x2WMtTpQRZD27uxp0dtx4pPpe8jZCAt5qEXp01yPd9tCeFv5NrD0WYveqvqFaj85Ts1jp82bnrHtiUgwppaOOOA87GXrEDbsmL1pZ6M4t4xA/CNmQSG0Ini56T5RISw35g6qkJO/TG5ev6UdnaGDBOv+IFNUVvEjXtikp8dK7cuhOem2EfnX5fZPZN2qmvXWOC9Xx27L6iDkuyjN4DhYoIjmGvRxpIhnWE9YrPNtDEzSiPlJQNMviHGUy0dgsuRUv6DGL2qDy6zpKuVi4FxHQB+WTn9Xtj80tMaf3yhH768ZKARicZCja4OPKWfQc4EtJxDhsI7970BM++riGjQNRlUrNhRI/8TOrCyLZHz+wdLiUS2wLD9bI/2KgLluXpSoVtHEQWtoEOpdZUiVSC2gD4K7YfpqPdxyhRm+3k9hbUgbv5bdOaqUKYnOoofKkl838gTx+qdFFHINAjWM2AgOUnTtol4jyQd6sAuuBGXlGHNV4RzKdqOCFXevtlWNzH1vO5umDci3zc89fkHtyDWDgBe939aRcKarZJFZCrLjzm5N+3Kg/nX35PDwLChSxzoEV6nX9xKVqXU2zAtKfgVhvs4D8L+dMXbnMhoqHRA7N8ixcofbT5t8lSrBDiyqYyJhVU3nDEKCr0NugNw8QpfVUUi/iXB4GaQVkps1u/UzSI4mEP/TYGp4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5277.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(346002)(39860400002)(366004)(136003)(376002)(38070700005)(55016002)(53546011)(33656002)(86362001)(4326008)(122000001)(8936002)(9686003)(2906002)(6506007)(52536014)(8676002)(38100700002)(7696005)(5660300002)(66574015)(26005)(966005)(76116006)(66946007)(54906003)(83380400001)(6636002)(316002)(66476007)(66556008)(64756008)(66446008)(71200400001)(110136005)(186003)(478600001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?/ZzL5XfEAJgSXmLAyTfsu7kXyieop/9RJgiYCLABqiVzBZqgXVT2EDX5WyQQ?= =?us-ascii?Q?0xDD3x/b4x6WRE0RhVJWgKDiidrKiwMI+NvhVLnB/YxvKH8MiARiwUkhhp5D?= =?us-ascii?Q?iDjXcrkyBpvTkWH0HuHYqMT5xcjbNWmahtGE2EKCmccSsU1qbr/83soseg5V?= =?us-ascii?Q?qxhSeuSyRqCBjzQIfab+A+TlvCr2ITjqlAL/XcSR/wiF1l990jjwjgWiNZlz?= =?us-ascii?Q?DWX+KsC3yUDqYqldzjnhykQPJe24ZCVz79D9xTus1mTw5fEnkwJFBITpQn7A?= =?us-ascii?Q?I3nvnQHGUS2csySiGtpJOabK6MYk8w34G+VjhOEBDV78OL0eX1/y10TQHua3?= =?us-ascii?Q?pzYH5BEbf4oU3bKO2kfn8Xo1wP1usXc1Ti5VuwepKEBRG6TZ37nc0qQeBNSk?= =?us-ascii?Q?sNABkvz3w2/vRjcoZiiDUAogld1THIteICjWXR0LrNWBg5fzfdwKCPj5qiGb?= =?us-ascii?Q?WYxOWN8/OIwFSvYvrTVHM6UANL0qW6azJNBVJC1rIoms6bWTr5NTG10AwDsE?= =?us-ascii?Q?3PthWoyQO7pZOTd5rEHZ46326/p5kdr3o0evYS/9WuSTOB0b6JQgnb/hlV8/?= =?us-ascii?Q?ZGtzv7yGnw1x3kFDl24YeA+lMKgMB5+M8AKj6QajJYLmeuZnMSI/hPhl0Nx9?= =?us-ascii?Q?W+7WKsK3OLyhIs3Sdn76A+gTeq0L23YBE8cnYy4M+rJefk3RzsbQ4+WdlV/+?= =?us-ascii?Q?gWOv1O2DWZ+FtUf9Zx4EMjOizi3+3IfVuoRXzVk2g5Fy1Pt+8akLm3JS1wDz?= =?us-ascii?Q?Aw47JHF6PAHjHLHEu46nzOCi5iKmOV8pNItk9F1DnVmqAQ/a2b6KpgOPERXn?= =?us-ascii?Q?PLu9NhfbohwCOI87eqIrWslLDdYR5PGfGf5X+Tz7b4zRhEK7nQq618QDxYFw?= =?us-ascii?Q?sbVHg8WebasdWJ0qSgFoVLAkbgwDiapRcYa6JqsdoGyTr6A08NIwoNZUI/r/?= =?us-ascii?Q?4xSZFkouRsFoD/BEZ7FTsrZmyzTQHwGQQsqwUDiMR2pdI+LgNkLIPl1OO3FN?= =?us-ascii?Q?kb1tP7ueZGcLIqxC/S+d71a26GAaMnVVpACa0VRYS3bghhNZRGI8iGUjX4aX?= =?us-ascii?Q?UXTFv3bCsO6jzXL2hZzDM95LKBewOkSzmTD2WoP4ryKXrV6jj5xpZ3p4Fd8b?= =?us-ascii?Q?ieIoxE8gzH5Sv0p+L6rt5eNMS80Rwhy96c7Q4KPDGHE94Eogf2Z0JdCI/Okw?= =?us-ascii?Q?Te7QrWV+Mq9X8rkE8bUeK+CT8YHReNNrS8n8Yl97FNSQIlhjTLcJcJ/lem1a?= =?us-ascii?Q?NkOXHHDHtLXTL4ncKWqwQLlcaI7XgKUYIgISuMm8I3OkwSc1TepRH/B2yS1l?= =?us-ascii?Q?QBtxPoQh9bBf0w1ygXp4P/9L?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5277.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e21b6004-0719-4090-0084-08d974231111 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Sep 2021 06:20:20.7983 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iwWkp4gccKLk0rsFN10ay0kjHzQrEJSbM/qsbJE4lV6R86NRDcgoSSADkBq7QuVK7Fl9s3wl4LXRgBHbDgTKNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1963 Return-Path: zhichao.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable No. My point is the HII usage would require the HII browser engine. That's = too complex for this simple app. Dandan, If I am wrong, please help to correct. Thanks, Zhichao > -----Original Message----- > From: Ni, Ray > Sent: Thursday, September 9, 2021 10:55 PM > To: Gao, Zhichao ; Bi, Dandan > > Cc: Wang, Jian J ; Liming Gao > ; devel@edk2.groups.io > Subject: RE: [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit > string drawing within one line >=20 > I remember that HII can tell the width of a string. > Have you evaluated using HII? +@Bi, Dandan >=20 > > -----Original Message----- > > From: Gao, Zhichao > > Sent: Thursday, September 9, 2021 3:26 PM > > To: devel@edk2.groups.io > > Cc: Wang, Jian J ; Liming Gao > ; Ni, Ray > > Subject: [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string > drawing within one line > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3590 > > > > Limit the draw box always within the screen's column and row. > > Limit the string drawing within one line. > > > > Change-Id: Ib7bd63cb07b23875a1e4f37ae80a422e1d5ed54f > > Cc: Jian J Wang > > Cc: Liming Gao > > Cc: Ray Ni > > Signed-off-by: Zhichao Gao > > --- > > > > V2: > > > > Drop the change in UefiBootManagerLib in V1. > > > > Add the limitation in BootManagerMenuApp instead. > > > > > > .../BootManagerMenuApp/BootManagerMenu.c | 72 > ++++++++++++++++++- > > 1 file changed, 69 insertions(+), 3 deletions(-) > > > > diff --git > a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > > > b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > > index 9e729074ec..d4bdeba073 100644 > > --- > a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > > +++ > b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > > @@ -1,7 +1,7 @@ > > /** @file > > > > The application to show the Boot Manager Menu. > > > > > > > > -Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
> > > > +Copyright (c) 2011 - 2021, Intel Corporation. All rights reserved.
> > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > **/ > > > > @@ -45,9 +45,56 @@ PrintStringAt ( > > IN CHAR16 *String > > > > ) > > > > { > > > > + UINTN ScreenWidth; > > > > + UINTN ScreenRows; > > > > + CHAR16 *TurncateString; > > > > + EFI_STATUS Status; > > > > + UINTN ShowingLength; > > > > > > > > gST->ConOut->SetCursorPosition (gST->ConOut, Column, Row); > > > > - return Print (L"%s", String); > > > > + > > > > + gST->ConOut->QueryMode ( > > > > + gST->ConOut, > > > > + gST->ConOut->Mode->Mode, > > > > + &ScreenWidth, > > > > + &ScreenRows > > > > + ); > > > > + > > > > + if (Column > (ScreenWidth - 1) || Row > (ScreenRows - 1)) { > > > > + return 0; > > > > + } > > > > + > > > > + if ((StrLen (String) + Column) > (ScreenWidth - 1)) { > > > > + // > > > > + // | - ScreenWidth - | > > > > + // ...Column..................... > > > > + // TurncateString length should leave one character for draw box a= nd > > > > + // require one character for string end. > > > > + // > > > > + ShowingLength =3D ScreenWidth - Column - 1; > > > > + TurncateString =3D AllocatePool ((ShowingLength + 1) * sizeof (CHA= R16)); > > > > + > > > > + if (TurncateString =3D=3D NULL) { > > > > + return 0; > > > > + } > > > > + > > > > + Status =3D StrnCpyS (TurncateString, ShowingLength + 1, String, > ShowingLength - 3); > > > > + > > > > + if (EFI_ERROR (Status)) { > > > > + FreePool (TurncateString); > > > > + return 0; > > > > + } > > > > + > > > > + *(TurncateString + ShowingLength - 3) =3D L'.'; > > > > + *(TurncateString + ShowingLength - 2) =3D L'.'; > > > > + *(TurncateString + ShowingLength - 1) =3D L'.'; > > > > + *(TurncateString + ShowingLength) =3D L'\0'; > > > > + ShowingLength =3D Print (L"%s", TurncateString); > > > > + FreePool (TurncateString); > > > > + return ShowingLength; > > > > + } else { > > > > + return Print (L"%s", String); > > > > + } > > > > } > > > > > > > > /** > > > > @@ -68,7 +115,22 @@ PrintCharAt ( > > CHAR16 Character > > > > ) > > > > { > > > > + UINTN ScreenWidth; > > > > + UINTN ScreenRows; > > > > + > > > > gST->ConOut->SetCursorPosition (gST->ConOut, Column, Row); > > > > + > > > > + gST->ConOut->QueryMode ( > > > > + gST->ConOut, > > > > + gST->ConOut->Mode->Mode, > > > > + &ScreenWidth, > > > > + &ScreenRows > > > > + ); > > > > + > > > > + if (Column > (ScreenWidth - 1) || Row > (ScreenRows - 1)) { > > > > + return 0; > > > > + } > > > > + > > > > return Print (L"%c", Character); > > > > } > > > > > > > > @@ -193,7 +255,11 @@ InitializeBootMenuScreen ( > > > > > > MaxPrintRows =3D Row - 6; > > > > UnSelectableItmes =3D TITLE_TOKEN_COUNT + 2 + HELP_TOKEN_COUNT + > 2; > > > > - BootMenuData->MenuScreen.Width =3D MaxStrWidth + 8; > > > > + if (MaxStrWidth + 8 > Column) { > > > > + BootMenuData->MenuScreen.Width =3D Column; > > > > + } else { > > > > + BootMenuData->MenuScreen.Width =3D MaxStrWidth + 8; > > > > + } > > > > if (BootMenuData->ItemCount + UnSelectableItmes > MaxPrintRows) { > > > > BootMenuData->MenuScreen.Height =3D MaxPrintRows; > > > > BootMenuData->ScrollBarControl.HasScrollBar =3D TRUE; > > > > -- > > 2.31.1.windows.1