Commit Graph

38 Commits

Author SHA1 Message Date
Hao Wu 16f6922709 MdeModulePkg: Refine casting expression result to bigger size
There are cases that the operands of an expression are all with rank less
than UINT64/INT64 and the result of the expression is explicitly cast to
UINT64/INT64 to fit the target size.

An example will be:
UINT32 a,b;
// a and b can be any unsigned int type with rank less than UINT64, like
// UINT8, UINT16, etc.
UINT64 c;
c = (UINT64) (a + b);

Some static code checkers may warn that the expression result might
overflow within the rank of "int" (integer promotions) and the result is
then cast to a bigger size.

The commit refines codes by the following rules:
1). When the expression is possible to overflow the range of unsigned int/
int:
c = (UINT64)a + b;

2). When the expression will not overflow within the rank of "int", remove
the explicit type casts:
c = a + b;

3). When the expression will be cast to pointer of possible greater size:
UINT32 a,b;
VOID *c;
c = (VOID *)(UINTN)(a + b); --> c = (VOID *)((UINTN)a + b);

4). When one side of a comparison expression contains only operands with
rank less than UINT32:
UINT8 a;
UINT16 b;
UINTN c;
if ((UINTN)(a + b) > c) {...} --> if (((UINT32)a + b) > c) {...}

For rule 4), if we remove the 'UINTN' type cast like:
if (a + b > c) {...}
The VS compiler will complain with warning C4018 (signed/unsigned
mismatch, level 3 warning) due to promoting 'a + b' to type 'int'.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
2017-03-06 14:33:20 +08:00
Eric Dong a52aed37f3 MdeModulePkg HiiDatabase: Remove extra memory initialization.
The memory will be set to background color after success allocate
the data, so not need to call AllocateZeroPool.

Related bugz: https://bugzilla.tianocore.org/show_bug.cgi?id=223

Cc: Dandan Bi <dandan.bi@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-11-17 17:32:35 +08:00
Ruiyu Ni 4a4297160f MdemodulePkg/HiiDatabase: Correct typo in comments.
Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Dandan Bi <dandan.bi@intel.com>
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
2016-09-28 16:21:45 +08:00
Dandan Bi 8f88f023fc MdeModulePkg/Database: Fix incorrect calculation of baseline in FontPackage
When adding font package, there exists the case that only have the
EFI_HII_GIBT_GLYPH_DEFAULT or EFI_HII_GIBT_GLYPHS_DEFAULT glyph block
and use the default cell info in font package fixed header. In this
case, we can't get the correct baseline now. This patch is to fix this
issue by recalculating the baseline when the glyph block type is
EFI_HII_GIBT_GLYPH_DEFAULT or EFI_HII_GIBT_GLYPHS_DEFAULT.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-06-15 10:52:42 +08:00
Dandan Bi d2970bbc1d MdeModulePkg/HiiDatabase: Remove the incorrect calculation of font baseline
When add Font Package, the cell in EFI_HII_FONT_PACKAGE_HDR
contains the measurement of the widest and tallest characters
in the font. The measurement may be not absolutely correct,
so when use this cell information to calculate the baseline may
cause incorrect result. Besides this calculation is not necessary.
So remove it now.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-06-06 14:08:31 +08:00
Dandan Bi 0672c2cdfe MdeModulePkg/HiiDatabase: Preinit background when render string to screen
When render string to screen, for proportional fonts,
the background color may not set to the whole BltBuffer.
And this will cause incorrect display.
Now initialize the background color to fix this issue.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-06-06 14:08:31 +08:00
Dandan Bi 3a2718d74e MdeModulePkg: HiiDatabaseDxe: HiiStringToImage() should not overwrite BltX
when has next line to draw, should not overwrite the BltX
to 0, instead should keep the BltX value that pass into
StringToImage function.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
2016-02-23 17:03:20 +08:00
Dandan Bi 5ad66ec692 MdeModulePkg:Use safe string functions
Replace unsafe String functions with new added safe string functions

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17724 6f19259b-4bc3-4df7-8a09-765794883524
2015-06-29 02:36:31 +00:00
Dandan Bi 2d9cdfd86e MdeModulePkg:Add line break character
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17491 6f19259b-4bc3-4df7-8a09-765794883524
2015-05-21 07:02:51 +00:00
Feng Tian 6e1e540554 1) Add type cast for better coding style.
2) replace StrCpy() usage in Variable driver with StrnCpy().

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15770 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-07 08:54:34 +00:00
Eric Dong 523f48e771 Refine code to make it more safely.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15598 6f19259b-4bc3-4df7-8a09-765794883524
2014-06-26 03:24:25 +00:00
Eric Dong c0a3c3da98 Refine the comments and code to follow spec.
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14573 6f19259b-4bc3-4df7-8a09-765794883524
2013-08-20 07:13:28 +00:00
ydong10 f01b91ae42 Fixed build failed.
Signed-off-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13406 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-31 08:35:48 +00:00
ydong10 bf4a3dbd47 Add new interface GetVariable2 and GetEfiGlobalVariable2 to return more info. Also replace old interface with new one.
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13375 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-30 07:36:00 +00:00
lgao4 5cfe42344d Update HiiFont Service to return error status instead of ASSERT for the invalid input.
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13209 6f19259b-4bc3-4df7-8a09-765794883524
2012-04-24 01:59:55 +00:00
lgao4 fbf82a2cf2 Fixes two issues in HiiFontProtocol->StringToImage() implementation on how to show string with wrap flag.
Signed-off-by: lgao4

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12064 6f19259b-4bc3-4df7-8a09-765794883524
2011-08-01 06:40:17 +00:00
lgao4 1b88f96461 The input StringInfo should be kept for HiiStringIdToImage() function.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11336 6f19259b-4bc3-4df7-8a09-765794883524
2011-02-23 10:07:38 +00:00
lgao4 f6cf5cf800 Support proportional Font and Font output flags.
1. Abstract the maximum baseline and character height in Proportional Font package as its baseline and line height, and use fixed height as base line and line height for simple font packages.
  2. Update logic to handle string without EFI_HII_OUT_FLAG_CLIP_CLEAN_Y flag when string height exceeds the line height, and handle the string without EFI_HII_OUT_FLAG_CLIP_CLEAN_X flag when string wide exceeds the screen wide.
  3. Calculate Origin point by adding BaseLine on Starting position, and calculate the left-top corner of character by Origin point and CELL information. 



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11270 6f19259b-4bc3-4df7-8a09-765794883524
2011-01-24 04:58:45 +00:00
hhtian e5eed7d364 Update the copyright notice format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10418 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-24 09:33:45 +00:00
xdu2 1b2bf3cadc Add some security check.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9934 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-05 06:13:18 +00:00
eric_tian 35c218d7e6 fix the HiiStrIdToImage sct failure, which is caused by wrong algorithm of finding right-most line break opportunity.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8446 6f19259b-4bc3-4df7-8a09-765794883524
2009-06-03 01:43:47 +00:00
eric_tian 4772ce75e8 refine the implementation of HiiStringToImage:
1. Remove the limitation of MAX_STRING_LENGTH and according to actual string length to store glyph info
2. fix a issue when print multi-lines, the next line will overlaps the above line. The original implementation doesn't recalculate the start point of X/Y axis.
3. refine the flow to avoid the meaningless recursive call.
4. modify the usage of "Index" to force them 1/1 mapping between glyphbuf and string. So the RowInfoArray and ColumnInfoArray can reflect the actual situation.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8371 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-21 09:41:59 +00:00
vanjeff f618b2fa0a rename array name to avoid naming collision.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8340 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-20 02:12:26 +00:00
qhuang8 7b06dc8a91 Add ASSERT() check for StringInfo pointer.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8055 6f19259b-4bc3-4df7-8a09-765794883524
2009-04-10 04:27:35 +00:00
qhuang8 bd37f9718f Add ASSERT() check for StringInfoIn structure.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7968 6f19259b-4bc3-4df7-8a09-765794883524
2009-03-27 04:56:54 +00:00
qhuang8 bf9af1b959 Apply GetBestLanguage() for the implementation of HiiStringIdToImage() API.
E.g. L"PlatformLang" variable is "en" and registered string supports "en-US" 

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7954 6f19259b-4bc3-4df7-8a09-765794883524
2009-03-25 10:07:39 +00:00
qwang12 96ff65a1fb K8:
1) Fix the bug the assert conditions. || should be &&.
2) Add in code path and check-for-null-pointer to do error handling.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7308 6f19259b-4bc3-4df7-8a09-765794883524
2009-01-20 01:52:02 +00:00
qwang12 676df92c2c Remove SafeFreePool from MemoryAllocationLib as this API's name is misleading. Its implementation only check if a pointer is NULL. If a garbage pointer is passed in, the gBS->FreePool will still ASSERT in debug build and return error code.
It is recommended that module writer should keep track how a pointer is allocated and free it after use.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6306 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-30 07:32:46 +00:00
jji4 fe1e36e550 Patch to remove STATIC modifier. This is on longer recommended by EFI Framework coding style. All duplicated symbols has been renamed accordingly.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6296 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-30 06:05:06 +00:00
qwang12 c27eb35861 HiiLibGetCurrentLanguage returns the current UEFI variable "PlatformLang" (if this variable does not exist, a default value is returned). This function is called by HiiDatabase itself. Now, HiiLibGetCurrentLanguage is in HiiLib. Because of this, we can't add location of Hii protoocol in the library constructor of HiiLib. This cause Hii Database driver never get loaded (circular dependency).
By moving HiiLibGetCurrentLanguage to UefiLib, library constructor (depex) can be added back to HiiLib to make sure the execution order is correct.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5939 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-21 08:51:15 +00:00
qwang12 08e6463a72 Merged in the bug fixes from EDK I.
*** Press F9 in Uefi64 FrontPage shouldnot enter sub-menu 
** [FT] Some UI error on multiple platforms on framework_20080811
** [FT] UI test of How tall are you(Hex) on framework_20080811

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5767 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-02 01:21:43 +00:00
qwang12 e90b081afa Clean up HiiDatabase for Doxygen comments requirement.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5467 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-15 06:29:27 +00:00
qwang12 813acf3a9a Merged in the following trackers from EDK:
EDK1145 Cursor mising in shell in some case 
EDK1099: Dell - [HII] HiiGetFontInfo() not retrieve the system font by FoFontInfoMask
EDK1127: [UEFI 2.10] Keyboard layout support 
EDK1129: [UEFI HII] GUID is represented wrongly in Config String
And some other fixes such as
*[UEFI HII] HiiGetAltCfg is generating "Name=" sub string in the wrong format 
*UEFI HII: GetUnicodeStringTextOrSize() doesn't handle NULL StringDest properly
*GetFontInfo() need be updated to avoid iteration 
*HIIStringProtocolTest failed on multiple platform
*[Uefi 2.1] Comply with latest Hii ECR 
* GetFontInfo() need be updated to avoid iteration


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5361 6f19259b-4bc3-4df7-8a09-765794883524
2008-06-23 09:41:33 +00:00
qwang12 35ae460227 Updated copyright.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5352 6f19259b-4bc3-4df7-8a09-765794883524
2008-06-19 02:37:22 +00:00
qwang12 50b399856d Update call-by-value to call-by-reference for EFI_HII_GLYPH_INFO type.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5351 6f19259b-4bc3-4df7-8a09-765794883524
2008-06-19 02:35:35 +00:00
qhuang8 ac64461468 De-unicode in comment for all source files.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5302 6f19259b-4bc3-4df7-8a09-765794883524
2008-05-27 03:24:01 +00:00
qwang12 30d27d1542 Pass GCC build.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5287 6f19259b-4bc3-4df7-8a09-765794883524
2008-05-23 06:26:23 +00:00
qwang12 93e3992d1e UEFI HII: Merge UEFI HII support changes from branch.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4599 6f19259b-4bc3-4df7-8a09-765794883524
2008-01-21 14:39:56 +00:00