From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web12.988.1632272424227706422 for ; Tue, 21 Sep 2021 18:00:24 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=L8WQM7h+; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: zhichao.gao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10114"; a="309046445" X-IronPort-AV: E=Sophos;i="5.85,312,1624345200"; d="scan'208";a="309046445" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2021 18:00:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,312,1624345200"; d="scan'208";a="585209664" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga004.jf.intel.com with ESMTP; 21 Sep 2021 18:00:18 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) 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; Tue, 21 Sep 2021 18:00:17 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 21 Sep 2021 18:00:17 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.106) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 21 Sep 2021 18:00:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nVegFbxs/IY5PlqMcASS9OwKyC9kl8gXaK04Cy6///SXrUSkId6TfTCZQP4f4kB3BOOPc+/3X2y2JI9EreXYIdOXoQqLXqsERmhKReyNMdGiyiuXnCC6n1IzBqeuRSVblvPFjqJzX+2QNVlodJ59icxGb+l+XXYn7ab+T59lKTYqNICwf/YKYD4sP+/ueIuJJQSVUm8AilJxj4V40XK6II7pyK4h+CetXZ+BB9rpyYYRPn/f31/vguXRL8lXGMqigfRnCJPqijBQtRVX4VB/CppEDCq3O/6uCQwvpKgVPumOL/u9RZz/i/TcvkdL9eisL18rBzgecvAtppwXWiIKGg== 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=SNv81/wGG+1z1rj1JUDclKgreXVsX8CjBkkSXQLZQD0=; b=d88AOaleLSmkYLW4JcWGVk8yyPuLnSD9FWfO2Wcx23KI8VE/iw7NiS0YSir8nZHEqlDICtr2EwOhBEl+6HRq4nSmUhMrT8pM+Fzlp6bvSamF0FpDhQAVynEcOFibKNrMx1yS/P317gEYrfsqGNwF/Ma94sWcBd/HMCIzOd+xAqXKq7l14Cu4ZDQUgemlPYxSFK6KSsLSaGyN4AFV6KJglCzOZwYZXrNj1/ylxFCqQCNyQYezf2aVIw7/g/4qkUv9VYB7MGxtLqAzL91DaaD0vKy0mYw07gB3buA2LiqzdFOf32vSI/2QgtdS9nmo3X+y5XLzYFq8XvhEAsvm9D2iVQ== 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=SNv81/wGG+1z1rj1JUDclKgreXVsX8CjBkkSXQLZQD0=; b=L8WQM7h+YWbDTU0tjxylxbD1rhvTzY2EgJ/NuDc1jqHrmphC3KP23Rjf7mIT0+vAr9SU1ZP8q4kIfRWSHQi4XrWBolOx4Of34tpEnUlyJwdf45p9JuKAyDfIxcDE+YkkiLO0lHR9MhTW3/GIfSKuR+6c8nXKT4NHRNxgetnqy0I= Received: from DM4PR11MB5277.namprd11.prod.outlook.com (2603:10b6:5:388::23) by DM8PR11MB5734.namprd11.prod.outlook.com (2603:10b6:8:31::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Wed, 22 Sep 2021 01:00:16 +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.4523.019; Wed, 22 Sep 2021 01:00:16 +0000 From: "Gao, Zhichao" To: "devel@edk2.groups.io" , "Gao, Zhichao" , "Ni, Ray" , "Bi, Dandan" CC: "Wang, Jian J" , Liming Gao Subject: Re: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Topic: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Index: AQHXpUvsuh5reQxFl0O+Aioo+AtRhaubylYAgAECOECAEoL5cA== Date: Wed, 22 Sep 2021 01:00:15 +0000 Message-ID: References: <20210909072541.3069-1-zhichao.gao@intel.com> <16A361A200435518.18571@groups.io> In-Reply-To: <16A361A200435518.18571@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e96fac25-eaab-466f-2610-08d97d64573f x-ms-traffictypediagnostic: DM8PR11MB5734: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3968; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZYrf+LZXcANdOGvUC7Z+9LPc4EeB9SBQFthriCKdWd9b9f36pL11the0NM7WWqh2P/ZYKP4EAAgduM8kspwWG7vwEcC9RZcUAnhlklM2wlYLI7qvzs81kubOdqKopXW9p90TpkOeOIbrLk1I5NJXFj2HpDyOepY1+K1wIfS6o8kXLUJrLEeMGz8XxC9ONromEBKLehUSEAG204P5dFUUJ1QODf3E15mt0BS2Yf9d+Kq7M8IG/xBm6tbhJMGjw0SdtZqDPuD2LwCQIqxF9nuQvVwX84tol3rATdo+ufCAyp6nFNMVMjBeUijD0VpR+RU3HjtxBAD7vd/Io50KRErjoz4eMIYmLoLcKfZAjo9oDSkLM8NYn+lPIXog9c20gWTW+TaCHRhfHrTFoKUaglHLGE8U+/SWLDrMLr2iDIIerTr6NHtRLXEwvrFX2rqsM788ZHU3DHlGX4S3AlVml3rBLmpfQL8Aj0viFYRd9b9OzA6eM+R05NxKitadd9SqnYwuiPf/oesI/Jbqop7NOGCSpFG59A2m22vGzAKOIroyx2kpMhScpv/+flNaP0e0+QQ6AQA95xVUM+zHHLbOJobvoxQiFVFteEWMI7YkPiWlD6NvFGXfZaHrTf1cH9cYbFp+IpHjehIP78rJ+PvTVwIMc3hXC42yf/S2PMdv9LQhWp/aqnL3O2OCrPV8vgWjb95Gyem6/l1gzv4BLaTr877KBWAgGHhW8eeFqae18eFZusCxEykliwztzNrRz/74Q7onE6K8u4OP5zgkz46WQRZjPci+/i0LCbpX38M35ApDJQ2euWJ6uP0Gji34hQbXpqfFQDhaqb8vF/klpDjUllHyCg== 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)(366004)(26005)(38070700005)(38100700002)(186003)(86362001)(122000001)(4326008)(6506007)(53546011)(5660300002)(55016002)(7696005)(8676002)(6636002)(110136005)(76116006)(66574015)(64756008)(2906002)(66946007)(66446008)(66556008)(66476007)(9686003)(316002)(8936002)(33656002)(54906003)(966005)(83380400001)(52536014)(71200400001)(508600001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?XfdZtHwjzcnMVTn3TVfoowmXXKQCAfd6vI33/XqN4vsfdXLMFLsxf4GKlMhR?= =?us-ascii?Q?DV7SmBCg7639er9lPn4z3wFmYU9GQEingii1LTmU/1w3Gaa++NskvS4iOokj?= =?us-ascii?Q?7yGeZ4Ir12szT1fMIo048PgJ7HWjDj15V30VJI0gdkCwxz/ynhBZvsjN3r/l?= =?us-ascii?Q?AIPU8E+Use49ft1JDK16pRx7P7QjNOfcN/UpoZha5xs3kWyif8WxSXpGHOKc?= =?us-ascii?Q?fBrrwP8oudXTx8x6Xm8GIJ6YuX2PjiJWxIE5ARbdbEs2DAptFH6mgUR2fk+z?= =?us-ascii?Q?J2nChnxdxHAJq0ldzHkAE2hw+muPJbqPLxTTjmCOjymGBQxPatF7hq57Cf1/?= =?us-ascii?Q?Y/N78Cs/8qecWu5oa61A7wrtSsQg3mF4VcQ9s5OfkhcQMJYIVYW9HawGNvEc?= =?us-ascii?Q?LczscP+AvO0/1Cln3dMNLy0m/7f8CxtgBf/wZmrRxbgOa5ichkGRo98AYklu?= =?us-ascii?Q?HsIqqZwqZLpPol/YUz6xge4eksGitMdvEgCPFULHxslbt53OwCZ/0VhzZddx?= =?us-ascii?Q?wyu3QUTIrLCOP1uit+P/MBFm/ohPSbkCVeg50/QmEmUYrVSraC3y60P9UJDf?= =?us-ascii?Q?85ZgD4mtutuUDRqq45KG/q7OsdI/bU25JA90Mg6Z9R4vvnJbfuhLn2qD4apW?= =?us-ascii?Q?GNWsE24irvFFpOk55bhPs1h4PFGdIR5jFnvLeTs2E33IfD2LkIBTx6xcMdhJ?= =?us-ascii?Q?pTPkHXfrmXrAksgznn7g9NzOh1NQqpAhbWS4ODHFIT8tpbHKYQKgNBJCUU9/?= =?us-ascii?Q?7tB42riYHc0pCLpQ0uEJN5TNwDaMJbLt9RCgdYdzeaMARP0b1liRHOTDeN/d?= =?us-ascii?Q?67Y52fTKuTCDhAzPUR2ywMK5zuV0/8C1e9F9hDXFE6u1qUj5NL+zcpYz7eOu?= =?us-ascii?Q?7eWa62zUPyEU3vCIzyv+DPkecHnROmQt8C+fd1DLY40hT27xWlIP+Y2WWIFo?= =?us-ascii?Q?kcGqgQY+r2Kq8yLjIbHdVmhCr0S43u946HXFZezQcybgOGO59nHGjJQZNkjM?= =?us-ascii?Q?V8GBAF9qZztG1e/VGfyMOW4N7gYYWo50qucnaMR+ONB1l9yBZ1mAR8mXRusn?= =?us-ascii?Q?GRGLVJsNcEtjGboy/WcQMdKGYt2fxykLUVhhcHT/aID1ORBmu9tn4xfczNIN?= =?us-ascii?Q?3D/gYZDjCteXosSUe9vtfgZ4yvOdd0vtE5SMdgVPYJ02Z18+kZI9P+7kGRBf?= =?us-ascii?Q?X7Exc7QC0/JNNLp/XV7HxXDmddDSQ17nXNVlvPVZTGzFSk353SxvJ8w4fpqv?= =?us-ascii?Q?aXgfyFUQvZYY32FgpAabqjSMOHRe9VwBP34QM5fakQnpHSiAjJncriy4oXTH?= =?us-ascii?Q?W18u+yDtq9TpJymlX+RkDFlw?= 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: e96fac25-eaab-466f-2610-08d97d64573f X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Sep 2021 01:00:16.2060 (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: GOlwhKHpIWmSGHgTFCM5MLntM7yKwctFmWDTRfSfhUX5RSIlCMh14u3lNwRiqM6GvGpwNTGDh3J/pw7hG3aOgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5734 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 Can we make a decision on this issue? Thanks, Zhichao > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Gao, > Zhichao > Sent: Friday, September 10, 2021 2:20 PM > To: Ni, Ray ; Bi, Dandan > Cc: Wang, Jian J ; Liming Gao > ; devel@edk2.groups.io > Subject: Re: [edk2-devel] [PATCH V2] > MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line >=20 > No. My point is the HII usage would require the HII browser engine. That'= s > too complex for this simple app. >=20 > Dandan, > If I am wrong, please help to correct. >=20 > Thanks, > Zhichao >=20 > > -----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 > > > > I remember that HII can tell the width of a string. > > Have you evaluated using HII? +@Bi, Dandan > > > > > -----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 and > > > > > > + // require one character for string end. > > > > > > + // > > > > > > + ShowingLength =3D ScreenWidth - Column - 1; > > > > > > + TurncateString =3D AllocatePool ((ShowingLength + 1) * sizeof > > > + (CHAR16)); > > > > > > + > > > > > > + 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 >=20 >=20 >=20 >=20 >=20 >=20