MCPcopy Create free account
hub / github.com/DiscordMessenger/dm / DrawMessageReply

Method DrawMessageReply

src/windows/MessageList.cpp:1992–2193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1990}
1991
1992int MessageList::DrawMessageReply(HDC hdc, MessageItem& item, RECT& rc)
1993{
1994 const int pfpOffset = ScaleByDPI(PROFILE_PICTURE_SIZE_DEF + 12);
1995 const int replyOffset = item.m_replyHeight + ScaleByDPI(5);
1996 RECT rcReply = rc;
1997 rcReply.bottom = rcReply.top + item.m_replyHeight;
1998
1999 item.m_refMsgRect = rcReply;
2000
2001 auto& refMsg = *item.m_msg->m_pReferencedMessage;
2002 const bool isActionMessage = IsActionMessage(refMsg.m_type);
2003 const bool isCompact = IsCompact();
2004
2005 Snowflake authorID = refMsg.m_author_snowflake;
2006
2007 // Draw the corner piece
2008 const int offset2 = isCompact ? 0 : pfpOffset;
2009 rcReply.left -= offset2;
2010
2011 const int iconSize = ScaleByDPI(32);
2012 const int iconOffset = (GetProfilePictureSize() - ScaleByDPI(2)) / 2;
2013 const int offset3 = isCompact ? iconSize : 0;
2014
2015 if (isCompact) {
2016 HRGN rgn = CreateRectRgn(
2017 rcReply.left + iconOffset,
2018 rcReply.bottom + ScaleByDPI(5) - iconSize,
2019 rcReply.left + iconOffset + offset2 + offset3 - ScaleByDPI(20),
2020 rcReply.bottom + ScaleByDPI(5)
2021 );
2022 SelectClipRgn(hdc, rgn);
2023
2024 DrawReplyPieceIcon(hdc, rcReply.left + iconOffset, rcReply.bottom + ScaleByDPI(5) - iconSize);
2025 if (g_ReplyPieceIcon)
2026 ri::DrawIconEx(hdc, rcReply.left + iconOffset, rcReply.bottom + ScaleByDPI(5) - iconSize, g_ReplyPieceIcon, iconSize, iconSize, 0, NULL, DI_COMPAT | DI_NORMAL);
2027
2028 SelectClipRgn(hdc, NULL);
2029 DeleteRgn(rgn);
2030 }
2031 else {
2032 DrawReplyPieceIcon(hdc, rcReply.left + iconOffset, rcReply.bottom + ScaleByDPI(5) - iconSize);
2033 if (g_ReplyPieceIcon)
2034 ri::DrawIconEx(hdc, rcReply.left + iconOffset, rcReply.bottom + ScaleByDPI(5) - iconSize, g_ReplyPieceIcon, iconSize, iconSize, 0, NULL, DI_COMPAT | DI_NORMAL);
2035 }
2036
2037 rcReply.left += offset2 + offset3;
2038
2039 COLORREF nameClr = CLR_NONE;
2040 if (authorID)
2041 {
2042 if (!isCompact && !isActionMessage)
2043 {
2044 int pfpSize = ScaleByDPI(16);
2045 int pfpBordSize = MulDiv(GetProfileBorderRenderSize(), ScaleByDPI(16), GetProfilePictureSize());
2046 int pfpBordOffX = MulDiv(ScaleByDPI(6), ScaleByDPI(16), GetProfilePictureSize());
2047 int pfpBordOffY = MulDiv(ScaleByDPI(4), ScaleByDPI(16), GetProfilePictureSize());
2048 int pfpX = rcReply.left;
2049 int pfpY = rcReply.top + (rcReply.bottom - rcReply.top - pfpSize) / 2;

Callers

nothing calls this directly

Calls 15

ScaleByDPIFunction · 0.85
GetProfilePictureSizeFunction · 0.85
GetAvatarCacheFunction · 0.85
DrawBitmapFunction · 0.85
GetProfileCacheFunction · 0.85
GetNameColorFunction · 0.85
GetDiscordInstanceFunction · 0.85
RectClass · 0.85
AddImagePlaceMethod · 0.80
GetFirstFrameMethod · 0.80
LookupProfileMethod · 0.80
SetDefaultStyleMethod · 0.80

Tested by

no test coverage detected