Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/widget/cocoa/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  MOZIconHelper.mm   Sprache: unbekannt

 
Spracherkennung für: .mm vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/*
 * Creates icons for display in native menu items on macOS.
 */

#include "MOZIconHelper.h"

#include "imgIContainer.h"
#include "nsCocoaUtils.h"

@implementation MOZIconHelper

// Returns an autoreleased empty NSImage.
+ (NSImage*)placeholderIconWithSize:(NSSize)aSize {
  return [[[NSImage alloc] initWithSize:aSize] autorelease];
}

// Returns an autoreleased NSImage.
+ (NSImage*)iconImageFromImageContainer:(imgIContainer*)aImage
                               withSize:(NSSize)aSize
                             svgContext:
                                 (const mozilla::SVGImageContext*)aSVGContext
                            scaleFactor:(CGFloat)aScaleFactor {
  bool isEntirelyBlack = false;
  NSImage* retainedImage = nil;
  nsresult rv;
  if (aScaleFactor != 0.0f) {
    rv = nsCocoaUtils::CreateNSImageFromImageContainer(
        aImage, imgIContainer::FRAME_CURRENT, aSVGContext, aSize,
        &retainedImage, aScaleFactor, &isEntirelyBlack);
  } else {
    rv = nsCocoaUtils::CreateDualRepresentationNSImageFromImageContainer(
        aImage, imgIContainer::FRAME_CURRENT, aSVGContext, aSize,
        &retainedImage, &isEntirelyBlack);
  }

  NSImage* image = [retainedImage autorelease];

  if (NS_FAILED(rv) || !image) {
    return nil;
  }

  // If all the color channels in the image are black, treat the image as a
  // template. This will cause macOS to use the image's alpha channel as a mask
  // and it will fill it with a color that looks good in the context that it's
  // used in. For example, for regular menu items, the image will be black, but
  // when the menu item is hovered (and its background is blue), it will be
  // filled with white.
  [image setTemplate:isEntirelyBlack];

  [image setSize:aSize];

  return image;
}

@end

[ Dauer der Verarbeitung: 0.41 Sekunden  ]