public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Gao, Zhichao" <zhichao.gao@intel.com>
To: "Ni, Ray" <ray.ni@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>,
	"gaoliming@byosoft.com.cn" <gaoliming@byosoft.com.cn>
Cc: "Wang, Jian J" <jian.j.wang@intel.com>
Subject: Re: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line
Date: Thu, 23 Sep 2021 08:21:43 +0000	[thread overview]
Message-ID: <DM4PR11MB527772E405A2834E895F1FCEF6A39@DM4PR11MB5277.namprd11.prod.outlook.com> (raw)
In-Reply-To: <CY4PR1101MB20726A5CD5B0312A3ECCD7658CA39@CY4PR1101MB2072.namprd11.prod.outlook.com>

Hi Ray,
That is one way for platform to customize their own boot option. It can solve the issue. But my point is it should not be used in such case. If EDK2 want a default behavior of the boot option description, we should change at the root instead of using the customize interfaces.

Thanks,
Zhichao

> -----Original Message-----
> From: Ni, Ray <ray.ni@intel.com>
> Sent: Thursday, September 23, 2021 3:43 PM
> To: Gao, Zhichao <zhichao.gao@intel.com>; devel@edk2.groups.io;
> gaoliming@byosoft.com.cn
> Cc: Wang, Jian J <jian.j.wang@intel.com>
> Subject: RE: [edk2-devel] [PATCH V2]
> MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line
> 
> Another option is to use EfiBootManagerRegisterBootDescriptionHandler()
> to alter the boot descriptions.
> 
> > -----Original Message-----
> > From: Gao, Zhichao <zhichao.gao@intel.com>
> > Sent: Thursday, September 23, 2021 11:47 AM
> > To: devel@edk2.groups.io; gaoliming@byosoft.com.cn; Ni, Ray
> > <ray.ni@intel.com>
> > Cc: Wang, Jian J <jian.j.wang@intel.com>
> > Subject: RE: [edk2-devel] [PATCH V2]
> MdeModulePkg/BootManagerMenuApp:
> > Limit string drawing within one line
> >
> > Hi Liming,
> >
> > Yes. Because the design of the BM app is not aimed to display the boot
> > option over one line. And it is not using the setup browser engine.
> > That would cause the difference.
> > If we want to make them align, there are two options:
> > 1. BM app to use the setup browser engine 2. add scroll bar logic for
> > the boot item
> >
> > Both above change is not simple and may cause new issues. It would be a
> new design other than a bug fix.
> >
> > Another solution is the patch V1 to limit the boot option description
> > within 72 characters. Ray pointed out it is not a good solution.
> >
> > BTW, I would remove the change-id in next patch.
> >
> > Thanks,
> > Zhichao
> >
> > > -----Original Message-----
> > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > gaoliming
> > > Sent: Thursday, September 23, 2021 10:59 AM
> > > To: devel@edk2.groups.io; Gao, Zhichao <zhichao.gao@intel.com>; Ni,
> > > Ray <ray.ni@intel.com>
> > > Cc: Wang, Jian J <jian.j.wang@intel.com>
> > > Subject: 回复: [edk2-devel] [PATCH V2]
> > > MdeModulePkg/BootManagerMenuApp: Limit string drawing within one
> > > line
> > >
> > > Zhichao:
> > >   With this change, the same boot option will be displayed
> > > differently in BootManagerApp and BootManager Page. Is it the designed
> behavior?
> > >
> > >   Besides, please remove change-id from the commit message.
> > >
> > > Thanks
> > > Liming
> > > > -----邮件原件-----
> > > > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Gao,
> > > Zhichao
> > > > 发送时间: 2021年9月22日 12:50
> > > > 收件人: Ni, Ray <ray.ni@intel.com>; devel@edk2.groups.io; Liming Gao
> > > > <gaoliming@byosoft.com.cn>
> > > > 抄送: Wang, Jian J <jian.j.wang@intel.com>
> > > > 主题: Re: [edk2-devel] [PATCH V2]
> > > MdeModulePkg/BootManagerMenuApp:
> > > > Limit string drawing within one line
> > > >
> > > > Hi Liming,
> > > >
> > > > The solution is different with the first time we discussed on the
> > > Bugzilla. Can
> > > > you review if it is OK to you?
> > > >
> > > > Thanks,
> > > > Zhichao
> > > >
> > > > > -----Original Message-----
> > > > > From: Ni, Ray <ray.ni@intel.com>
> > > > > Sent: Wednesday, September 22, 2021 11:28 AM
> > > > > To: Gao, Zhichao <zhichao.gao@intel.com>; devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Liming Gao
> > > > > <gaoliming@byosoft.com.cn>
> > > > > Subject: RE: [PATCH V2] MdeModulePkg/BootManagerMenuApp:
> Limit
> > > > > string drawing within one line
> > > > >
> > > > > Reviewed-by: Ray Ni <ray.ni@intel.com>
> > > > >
> > > > > -----Original Message-----
> > > > > From: Gao, Zhichao <zhichao.gao@intel.com>
> > > > > Sent: Thursday, September 9, 2021 3:26 PM
> > > > > To: devel@edk2.groups.io
> > > > > Cc: Wang, Jian J <jian.j.wang@intel.com>; Liming Gao
> > > > > <gaoliming@byosoft.com.cn>; Ni, Ray <ray.ni@intel.com>
> > > > > Subject: [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit
> > > string
> > > > > drawing within one line
> > > > >
> > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3590
> > > > >
> > > > > 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 <jian.j.wang@intel.com>
> > > > > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > > > > Cc: Ray Ni <ray.ni@intel.com>
> > > > > Signed-off-by: Zhichao Gao <zhichao.gao@intel.com>
> > > > > ---
> > > > >
> > > > > 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.<BR>
> > > > >
> > > > > +Copyright (c) 2011 - 2021, Intel Corporation. All rights
> > > > > +reserved.<BR>
> > > > >
> > > > >  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 = ScreenWidth - Column - 1;
> > > > >
> > > > > +    TurncateString = AllocatePool ((ShowingLength + 1) * sizeof
> > > (CHAR16));
> > > > >
> > > > > +
> > > > >
> > > > > +    if (TurncateString == NULL) {
> > > > >
> > > > > +      return 0;
> > > > >
> > > > > +    }
> > > > >
> > > > > +
> > > > >
> > > > > +    Status = StrnCpyS (TurncateString, ShowingLength + 1,
> > > > > + String,
> > > > > ShowingLength - 3);
> > > > >
> > > > > +
> > > > >
> > > > > +    if (EFI_ERROR (Status)) {
> > > > >
> > > > > +      FreePool (TurncateString);
> > > > >
> > > > > +      return 0;
> > > > >
> > > > > +    }
> > > > >
> > > > > +
> > > > >
> > > > > +    *(TurncateString + ShowingLength - 3) = L'.';
> > > > >
> > > > > +    *(TurncateString + ShowingLength - 2) = L'.';
> > > > >
> > > > > +    *(TurncateString + ShowingLength - 1) = L'.';
> > > > >
> > > > > +    *(TurncateString + ShowingLength)     = L'\0';
> > > > >
> > > > > +    ShowingLength = 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 = Row - 6;
> > > > >
> > > > >    UnSelectableItmes = TITLE_TOKEN_COUNT + 2 +
> > > > HELP_TOKEN_COUNT + 2;
> > > > >
> > > > > -  BootMenuData->MenuScreen.Width = MaxStrWidth + 8;
> > > > >
> > > > > +  if (MaxStrWidth + 8 > Column) {
> > > > >
> > > > > +    BootMenuData->MenuScreen.Width = Column;
> > > > >
> > > > > +  } else {
> > > > >
> > > > > +    BootMenuData->MenuScreen.Width = MaxStrWidth + 8;
> > > > >
> > > > > +  }
> > > > >
> > > > >    if (BootMenuData->ItemCount + UnSelectableItmes >
> > > > > MaxPrintRows) {
> > > > >
> > > > >      BootMenuData->MenuScreen.Height = MaxPrintRows;
> > > > >
> > > > >      BootMenuData->ScrollBarControl.HasScrollBar = TRUE;
> > > > >
> > > > > --
> > > > > 2.31.1.windows.1
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> > > 
> > >


  reply	other threads:[~2021-09-23  8:21 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-09  7:25 [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Gao, Zhichao
2021-09-09 14:54 ` Ni, Ray
2021-09-10  6:20   ` Gao, Zhichao
     [not found]   ` <16A361A200435518.18571@groups.io>
2021-09-22  1:00     ` [edk2-devel] " Gao, Zhichao
2021-09-22  3:27 ` Ni, Ray
2021-09-22  4:49   ` Gao, Zhichao
2021-09-23  2:59     ` 回复: [edk2-devel] " gaoliming
2021-09-23  3:46       ` Gao, Zhichao
2021-09-23  7:42         ` Ni, Ray
2021-09-23  8:21           ` Gao, Zhichao [this message]
2021-09-24  1:28             ` Ni, Ray
     [not found]       ` <16A756C7FFB49908.14001@groups.io>
2021-09-24  6:15         ` Gao, Zhichao
2021-09-26  1:00           ` 回复: " gaoliming

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM4PR11MB527772E405A2834E895F1FCEF6A39@DM4PR11MB5277.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox