diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf index f5d562a5..794d2c8d 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf @@ -346,7 +346,7 @@ namespace Beefy.theme.dark { base.Resize(x, y, width, height); if (mMenuButton != null) - mMenuButton.Resize(mWidth - GS!(30), GS!(3), GS!(14), GS!(12)); + mMenuButton.Resize(mWidth - GS!(20), GS!(3), GS!(14), GS!(12)); } public override bool IsTotalWindowContent() diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf index 2e9c0d82..98c5c743 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf @@ -31,6 +31,7 @@ namespace Beefy.theme.dark CheckboxOver, CheckboxDown, Check, + Close, CloseOver, DownArrow, @@ -51,6 +52,7 @@ namespace Beefy.theme.dark VertScrollbarThumbOver, VertScrollbarThumb, VertScrollbarArrow, + VertShortButton, VertShortButtonDown, Grabber, @@ -60,7 +62,6 @@ namespace Beefy.theme.dark MenuSepHorz, MenuSelect, TreeArrow, - UIPointer, UIImage, UIComposition, @@ -78,10 +79,8 @@ namespace Beefy.theme.dark EditPathNode, EditPathNodeSelected, EditAnchor, - UIBone, UIBoneJoint, - VisibleIcon, LockIcon, LeftArrow, @@ -94,20 +93,18 @@ namespace Beefy.theme.dark TimelineBracket, KeyframeOff, KeyframeOn, - LinkedIcon, + CheckboxLarge, ComboBox, ComboEnd, ComboSelectedIcon, - LinePointer, RedDot, Document, ReturnPointer, RefreshArrows, MoveDownArrow, - IconObject, IconObjectDeleted, IconObjectAppend, @@ -117,8 +114,8 @@ namespace Beefy.theme.dark IconType, IconError, IconBookmark, - ProjectFolder, + Project, ArrowMoveDown, Workspace, @@ -142,7 +139,6 @@ namespace Beefy.theme.dark RedDotUnbound, MoreInfo, - Interface, Property, Field, @@ -182,6 +178,7 @@ namespace Beefy.theme.dark CodeError, CodeWarning, ComboBoxFrameless, + PanelHeader, COUNT }; diff --git a/BeefTools/ImgCreate/ImgCreate.cpp b/BeefTools/ImgCreate/ImgCreate.cpp index 2eb05ea3..840f0611 100644 --- a/BeefTools/ImgCreate/ImgCreate.cpp +++ b/BeefTools/ImgCreate/ImgCreate.cpp @@ -114,7 +114,7 @@ int main() else fileName = "DarkUI_4.psd"; - if (!FileExists(fileName)) + if ((!FileExists(fileName)) && (size == 0)) { isThemeDir = true; fileName = "../../images/" + fileName; @@ -213,8 +213,8 @@ int main() { int srcX = xStart + xOfs; int srcY = yStart + yOfs; - auto color = srcImage->mBits[(srcX - srcImage->mX) + (srcY - srcImage->mY)*srcImage->mWidth]; - if (color != 0) + auto color = srcImage->mBits[(srcX - srcImage->mX) + (srcY - srcImage->mY)*srcImage->mWidth]; + if ((color & 0xFF000000) != 0) return true; } } @@ -248,6 +248,12 @@ int main() int srcY = yStart + yOfs; auto color0 = srcImage0->mBits[(srcX - srcImage0->mX) + (srcY - srcImage0->mY)*srcImage0->mWidth]; auto color1 = srcImage1->mBits[(srcX - srcImage1->mX) + (srcY - srcImage1->mY)*srcImage1->mWidth]; + + if ((color0 & 0xFF000000) == 0) + color0 = 0; + if ((color1 & 0xFF000000) == 0) + color1 = 0; + if (color0 != color1) return true; } diff --git a/BeefySysLib/img/ImageData.cpp b/BeefySysLib/img/ImageData.cpp index 879b93b3..9998f682 100644 --- a/BeefySysLib/img/ImageData.cpp +++ b/BeefySysLib/img/ImageData.cpp @@ -142,6 +142,31 @@ void ImageData::PremultiplyAlpha() packedColor->g = (packedColor->g * packedColor->a) / 255; packedColor->b = (packedColor->b * packedColor->a) / 255; + if (mIsAdditive) + packedColor->a = 0; + } + } +} + +void ImageData::UnPremultiplyAlpha() +{ + if (mBits == NULL) + return; + + if (mAlphaPremultiplied) + { + mAlphaPremultiplied = false; + int size = mWidth * mHeight; + for (int i = 0; i < size; i++) + { + PackedColor* packedColor = (PackedColor*)(mBits + i); + if (packedColor->a != 0) + { + packedColor->r = BF_MIN((packedColor->r * 255) / packedColor->a, 255); + packedColor->g = BF_MIN((packedColor->g * 255) / packedColor->a, 255); + packedColor->b = BF_MIN((packedColor->b * 255) / packedColor->a, 255); + } + if (mIsAdditive) packedColor->a = 0; } diff --git a/BeefySysLib/img/ImageData.h b/BeefySysLib/img/ImageData.h index 1662cf1f..c261c924 100644 --- a/BeefySysLib/img/ImageData.h +++ b/BeefySysLib/img/ImageData.h @@ -46,6 +46,7 @@ public: virtual bool LoadFromFile(const StringImpl& path); virtual bool ReadData() { return false; } virtual void PremultiplyAlpha(); + virtual void UnPremultiplyAlpha(); }; NS_BF_END; diff --git a/BeefySysLib/img/PSDReader.cpp b/BeefySysLib/img/PSDReader.cpp index fddcf59d..c57f5f91 100644 --- a/BeefySysLib/img/PSDReader.cpp +++ b/BeefySysLib/img/PSDReader.cpp @@ -1485,6 +1485,19 @@ ImageData* PSDReader::ReadImageData() } } } + + for (int i = 0; i < aSize; i++) + { + PackedColor& packedColor = *(PackedColor*)(&imageData->mBits[i]); + + if (packedColor.a != 0) + { + packedColor.r = BF_CLAMP((packedColor.r - (0xFF - packedColor.a)) * 0xFF / packedColor.a, 0, 0xFF); + packedColor.g = BF_CLAMP((packedColor.g - (0xFF - packedColor.a)) * 0xFF / packedColor.a, 0, 0xFF); + packedColor.b = BF_CLAMP((packedColor.b - (0xFF - packedColor.a)) * 0xFF / packedColor.a, 0, 0xFF); + } + } + if (rowLengths != NULL) { for (int i = 0; i < mChannels; i++) diff --git a/IDE/dist/images/DarkUI.png b/IDE/dist/images/DarkUI.png index 842ed66e..0ca582b6 100644 Binary files a/IDE/dist/images/DarkUI.png and b/IDE/dist/images/DarkUI.png differ diff --git a/IDE/dist/images/DarkUI.psd b/IDE/dist/images/DarkUI.psd index 1fc5d19a..173beda7 100644 Binary files a/IDE/dist/images/DarkUI.psd and b/IDE/dist/images/DarkUI.psd differ diff --git a/IDE/dist/images/DarkUI_2.png b/IDE/dist/images/DarkUI_2.png index 016931cc..ba983b3b 100644 Binary files a/IDE/dist/images/DarkUI_2.png and b/IDE/dist/images/DarkUI_2.png differ diff --git a/IDE/dist/images/DarkUI_4.png b/IDE/dist/images/DarkUI_4.png index f5782433..834e9c40 100644 Binary files a/IDE/dist/images/DarkUI_4.png and b/IDE/dist/images/DarkUI_4.png differ diff --git a/IDE/dist/images/DarkUI_4.psd b/IDE/dist/images/DarkUI_4.psd index 26298d1b..77c95369 100644 Binary files a/IDE/dist/images/DarkUI_4.psd and b/IDE/dist/images/DarkUI_4.psd differ diff --git a/IDE/dist/images/ImgCreate.exe b/IDE/dist/images/ImgCreate.exe index 925bbfda..ee4001d7 100644 Binary files a/IDE/dist/images/ImgCreate.exe and b/IDE/dist/images/ImgCreate.exe differ diff --git a/IDE/src/Settings.bf b/IDE/src/Settings.bf index 63c9efc1..27d8a5ed 100644 --- a/IDE/src/Settings.bf +++ b/IDE/src/Settings.bf @@ -266,11 +266,18 @@ namespace IDE public class Colors { public Color mText = 0xFFFFFFFF; - public Color mWindow = 0xFF595962; - public Color mBackground = 0xFF26262A; + public Color mWindow = 0xFF44444D; + public Color mBackground = 0xFF1C1C24; public Color mSelectedOutline = 0xFFCFAE11; public Color mMenuFocused = 0xFFE5A910; public Color mMenuSelected = 0xFFCB9B80; + public Color mAutoCompleteSubText = 0xFFB0B0B0; + public Color mAutoCompleteDocText = 0xFFC0C0C0; + public Color mAutoCompleteActiveText = 0xFFB0B0FF; + public Color mWorkspaceDisabledText = 0xFFA0A0A0; + public Color mWorkspaceFailedText = 0xFFE04040; + public Color mWorkspaceManualIncludeText = 0xFFE0E0FF; + public Color mWorkspaceIgnoredText = 0xFF909090; public Color mCode = 0xFFFFFFFF; public Color mKeyword = 0xFFE1AE9A; @@ -305,6 +312,9 @@ namespace IDE GetColor("SelectedOutline", ref mSelectedOutline); GetColor("MenuFocused", ref mMenuFocused); GetColor("MenuSelected", ref mMenuSelected); + GetColor("AutoCompleteSubText", ref mAutoCompleteSubText); + GetColor("AutoCompleteDocText", ref mAutoCompleteDocText); + GetColor("AutoCompleteActiveText", ref mAutoCompleteActiveText); GetColor("Code", ref mCode); GetColor("Keyword", ref mKeyword); diff --git a/IDE/src/ui/AutoComplete.bf b/IDE/src/ui/AutoComplete.bf index 9cb8fc7f..6996e4a6 100644 --- a/IDE/src/ui/AutoComplete.bf +++ b/IDE/src/ui/AutoComplete.bf @@ -697,7 +697,7 @@ namespace IDE.ui using (g.PushColor(0xFFFFFFFF)) g.DrawBox(DarkTheme.sDarkTheme.GetImage(.Menu), drawX, drawY, mRightBoxAdjust - GS!(8), drawHeight - GS!(8)); - using (g.PushColor(0xFFC0C0C0)) + using (g.PushColor(gApp.mSettings.mUISettings.mColors.mAutoCompleteDocText)) g.DrawString(docParser.ShowDocString, drawX + GS!(8), drawY + GS!(4), .Left, mDocWidth - GS!(20), .Wrap); } } @@ -923,7 +923,7 @@ namespace IDE.ui numStr.AppendF("{0}/{1}", mSelectIdx + 1, mEntryList.Count); if (g != null) { - using (g.PushColor(0xFFB0B0B0)) + using (g.PushColor(gApp.mSettings.mUISettings.mColors.mAutoCompleteSubText)) g.DrawString(numStr, curX, curY); } curX += font.GetWidth(numStr) + GS!(8); @@ -979,7 +979,7 @@ namespace IDE.ui if (g != null) { - using (g.PushColor(((sectionIdx == cursorSection) && (isParam)) ? 0xFFB0B0FF : 0xFFFFFFFF)) + using (g.PushColor(((sectionIdx == cursorSection) && (isParam)) ? gApp.mSettings.mUISettings.mColors.mAutoCompleteActiveText : gApp.mSettings.mUISettings.mColors.mText)) g.DrawString(sectionStr, curX, curY); } curX += sectionWidth; @@ -1015,7 +1015,7 @@ namespace IDE.ui curY += font.GetLineSpacing() + GS!(4); if (g != null) { - using (g.PushColor(0xFFC0C0C0)) + using (g.PushColor(gApp.mSettings.mUISettings.mColors.mAutoCompleteDocText)) docHeight = g.DrawString(docString, curX, curY, .Left, maxDocWidth, .Wrap); } else @@ -1052,12 +1052,12 @@ namespace IDE.ui curY += font.GetLineSpacing() + GS!(4); if (g != null) { - using (g.PushColor(0xFFFFFFFF)) + using (g.PushColor(gApp.mSettings.mUISettings.mColors.mText)) { g.DrawString(scope String(paramName.Length + 1)..AppendF("{0}:", paramName), curX, curY, .Left, mWidth, .Ellipsis); } - using (g.PushColor(0xFFC0C0C0)) + using (g.PushColor(gApp.mSettings.mUISettings.mColors.mAutoCompleteDocText)) { g.DrawString(paramDoc, curX + font.GetWidth(paramName) + font.GetWidth(": "), curY, .Left, mWidth, .Ellipsis); } diff --git a/IDE/src/ui/PanelHeader.bf b/IDE/src/ui/PanelHeader.bf index 0cd8616f..8d0ed6d9 100644 --- a/IDE/src/ui/PanelHeader.bf +++ b/IDE/src/ui/PanelHeader.bf @@ -40,9 +40,7 @@ namespace IDE.ui public override void Draw(Graphics g) { - using (g.PushColor(0xFFF0BFA4)) - g.DrawBox(DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.VertScrollbarThumb), 0, 0, mWidth, mHeight); - + g.DrawBox(DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.PanelHeader), 0, 0, mWidth, mHeight); g.SetFont(DarkTheme.sDarkTheme.mSmallFont); float y = GS!(6); using (g.PushColor(0xFFFFFFFF)) diff --git a/IDE/src/ui/ProjectPanel.bf b/IDE/src/ui/ProjectPanel.bf index 43272261..35ea7099 100644 --- a/IDE/src/ui/ProjectPanel.bf +++ b/IDE/src/ui/ProjectPanel.bf @@ -57,14 +57,14 @@ namespace IDE.ui if ((projectItem != null) && (projectItem.mParentFolder != null)) { if (projectItem.mIncludeKind == .Manual) - color = Color.Mult(color, 0xFFE0E0FF); + color = Color.Mult(color, gApp.mSettings.mUISettings.mColors.mWorkspaceManualIncludeText); else if (projectItem.mIncludeKind == .Ignore) - color = Color.Mult(color, 0xFF909090); + color = Color.Mult(color, gApp.mSettings.mUISettings.mColors.mWorkspaceIgnoredText); if (let projectSource = projectItem as ProjectSource) { if (projectSource.mLoadFailed) - color = Color.Mult(color, 0xFFFF0000); + color = Color.Mult(color, gApp.mSettings.mUISettings.mColors.mWorkspaceFailedText); } mTextColor = color; @@ -342,8 +342,8 @@ namespace IDE.ui item.mOnMouseClick.Add(new => ListViewItemClicked); UpdateColors(); DarkListViewItem listViewItem = (DarkListViewItem)item; - listViewItem.mFocusColor = 0xFFA0A0A0; - listViewItem.mSelectColor = 0xFFA0A0A0; + listViewItem.mFocusColor = gApp.mSettings.mUISettings.mColors.mWorkspaceDisabledText; + listViewItem.mSelectColor = gApp.mSettings.mUISettings.mColors.mWorkspaceDisabledText; } void UpdateColors() @@ -1960,9 +1960,9 @@ namespace IDE.ui listViewItem.mIsBold = checkProject == IDEApp.sApp.mWorkspace.mStartupProject; var projectOptions = IDEApp.sApp.GetCurProjectOptions(checkProject); - listViewItem.mTextColor = Color.Mult(DarkTheme.COLOR_TEXT, (projectOptions != null) ? Color.White : 0xFFA0A0A0); + listViewItem.mTextColor = Color.Mult(DarkTheme.COLOR_TEXT, (projectOptions != null) ? gApp.mSettings.mUISettings.mColors.mText : gApp.mSettings.mUISettings.mColors.mWorkspaceDisabledText); if (checkProject.mFailed) - listViewItem.mTextColor = Color.Mult(DarkTheme.COLOR_TEXT, 0xFFE04040); + listViewItem.mTextColor = Color.Mult(DarkTheme.COLOR_TEXT, gApp.mSettings.mUISettings.mColors.mWorkspaceFailedText); } }