diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/BetterFontPicker b/BetterFontPicker/BetterFontPicker.framework/Versions/A/BetterFontPicker index 5ed8dfb53f..ce5d0c8a7b 100755 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/BetterFontPicker and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/BetterFontPicker differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Headers/BetterFontPicker-Swift.h b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Headers/BetterFontPicker-Swift.h index a06c0b16c0..3f8dd7f0b2 100644 --- a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Headers/BetterFontPicker-Swift.h +++ b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Headers/BetterFontPicker-Swift.h @@ -1,4 +1,8 @@ -// Generated by Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15) +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.3 (swiftlang-1200.0.16.13 clang-1200.0.22.19) +#ifndef BETTERFONTPICKER_SWIFT_H +#define BETTERFONTPICKER_SWIFT_H #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wgcc-compat" @@ -82,6 +86,11 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOESCAPE #endif +#if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +# define SWIFT_RELEASES_ARGUMENT +#endif #if __has_attribute(warn_unused_result) # define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #else @@ -377,3 +386,395 @@ SWIFT_CLASS_NAMED("TableViewController") # pragma clang attribute pop #endif #pragma clang diagnostic pop +#endif + +#elif defined(__x86_64__) && __x86_64__ +// Generated by Apple Swift version 5.3 (swiftlang-1200.0.16.13 clang-1200.0.22.19) +#ifndef BETTERFONTPICKER_SWIFT_H +#define BETTERFONTPICKER_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +# define SWIFT_RELEASES_ARGUMENT +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#if __has_feature(modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import AppKit; +@import CoreGraphics; +@import Foundation; +@import ObjectiveC; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="BetterFontPicker",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +@class BFPMainViewController; + +SWIFT_PROTOCOL_NAMED("MainViewControllerDelegate") +@protocol BFPMainViewControllerDelegate +- (void)mainViewController:(BFPMainViewController * _Nonnull)mainViewController didSelectFontWithName:(NSString * _Nonnull)name; +@end + +@protocol BFPAffordanceDelegate; +@class NSCoder; +@class NSMenu; +@class NSEvent; + +SWIFT_CLASS_NAMED("Affordance") +@interface BFPAffordance : NSPopUpButton +@property (nonatomic, weak) id _Nullable delegate; +@property (nonatomic, copy) NSString * _Nullable familyName; +@property (nonatomic, copy) NSString * _Nonnull title; +- (nonnull instancetype)initWithFrame:(NSRect)buttonFrame pullsDown:(BOOL)flag OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithFrame:(NSRect)frameRect SWIFT_UNAVAILABLE; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (void)willOpenMenu:(NSMenu * _Nonnull)menu withEvent:(NSEvent * _Nonnull)event; +- (void)mainViewController:(BFPMainViewController * _Nonnull)mainViewController didSelectFontWithName:(NSString * _Nonnull)name; +@end + + +SWIFT_PROTOCOL_NAMED("AffordanceDelegate") +@protocol BFPAffordanceDelegate +- (void)affordance:(BFPAffordance * _Nonnull)affordance didSelectFontFamily:(NSString * _Nonnull)fontFamily; +@end + +@protocol BFPFontFamilyMemberPickerViewDelegate; + +SWIFT_CLASS_NAMED("FontFamilyMemberPickerView") +@interface BFPFontFamilyMemberPickerView : NSPopUpButton +@property (nonatomic, weak) id _Nullable delegate; +- (nonnull instancetype)initWithFrame:(NSRect)buttonFrame pullsDown:(BOOL)flag OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithFrame:(NSRect)frameRect SWIFT_UNAVAILABLE; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (void)didChange:(id _Nullable)sender; +@end + + +SWIFT_PROTOCOL_NAMED("FontFamilyMemberPickerViewDelegate") +@protocol BFPFontFamilyMemberPickerViewDelegate +- (void)fontFamilyMemberPickerView:(BFPFontFamilyMemberPickerView * _Nonnull)fontFamilyMemberPickerView didSelectFontName:(NSString * _Nonnull)name; +@end + + +SWIFT_PROTOCOL_NAMED("FontListDataSource") +@protocol BFPFontListDataSource +@property (nonatomic, readonly) BOOL isSeparator; +@property (nonatomic, readonly, copy) NSArray * _Nonnull names; +@property (nonatomic, copy) NSString * _Nonnull filter; +- (void)reload; +@end + + +SWIFT_CLASS_NAMED("FontListTableView") +@interface BFPFontListTableView : NSTableView +- (void)keyDown:(NSEvent * _Nonnull)event; +- (void)mouseDown:(NSEvent * _Nonnull)event; +- (nonnull instancetype)initWithFrame:(NSRect)frameRect OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER; +@end + +@class BFPSizePickerView; + +SWIFT_PROTOCOL_NAMED("SizePickerViewDelegate") +@protocol BFPSizePickerViewDelegate +- (void)sizePickerView:(BFPSizePickerView * _Nonnull)sizePickerView didChangeSizeTo:(double)size; +@end + +@protocol BFPCompositeViewDelegate; +enum BFPCompositeViewMode : NSInteger; +@class NSFont; + +SWIFT_CLASS_NAMED("FontPickerCompositeView") +@interface BFPCompositeView : NSView +@property (nonatomic, weak) id _Nullable delegate; +@property (nonatomic, readonly, strong) BFPAffordance * _Nonnull affordance; +@property (nonatomic, readonly, strong) BFPSizePickerView * _Nullable horizontalSpacing; +@property (nonatomic, readonly, strong) BFPSizePickerView * _Nullable verticalSpacing; +@property (nonatomic) enum BFPCompositeViewMode mode; +@property (nonatomic, strong) NSFont * _Nullable font; +- (nonnull instancetype)initWithFrame:(NSRect)frameRect OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)decoder OBJC_DESIGNATED_INITIALIZER; +- (void)resizeSubviewsWithOldSize:(NSSize)oldSize; +- (void)removeSizePicker; +- (void)removeMemberPicker; +- (BFPSizePickerView * _Nonnull)addHorizontalSpacingAccessoryWithInitialValue:(double)initialValue SWIFT_WARN_UNUSED_RESULT; +- (BFPSizePickerView * _Nonnull)addVerticalSpacingAccessoryWithInitialValue:(double)initialValue SWIFT_WARN_UNUSED_RESULT; +- (void)affordance:(BFPAffordance * _Nonnull)affordance didSelectFontFamily:(NSString * _Nonnull)fontFamily; +- (void)fontFamilyMemberPickerView:(BFPFontFamilyMemberPickerView * _Nonnull)fontFamilyMemberPickerView didSelectFontName:(NSString * _Nonnull)name; +- (void)sizePickerView:(BFPSizePickerView * _Nonnull)sizePickerView didChangeSizeTo:(double)size; +@end + +typedef SWIFT_ENUM_NAMED(NSInteger, BFPCompositeViewMode, "Mode", closed) { + BFPCompositeViewModeNormal = 0, + BFPCompositeViewModeFixedPitch = 1, +}; + + +SWIFT_PROTOCOL_NAMED("FontPickerCompositeViewDelegate") +@protocol BFPCompositeViewDelegate +- (void)fontPickerCompositeView:(BFPCompositeView * _Nonnull)view didSelectFont:(NSFont * _Nonnull)font; +@end + + +SWIFT_CLASS("_TtC16BetterFontPicker15FontPickerPanel") +@interface FontPickerPanel : NSPanel +@property (nonatomic, readonly) BOOL canBecomeKeyWindow; +- (void)cancelOperation:(id _Nullable)sender; +- (void)resignKeyWindow; +- (nonnull instancetype)initWithContentRect:(NSRect)contentRect styleMask:(NSWindowStyleMask)style backing:(NSBackingStoreType)backingStoreType defer:(BOOL)flag OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSSearchField; +@class NSBundle; + +SWIFT_CLASS_NAMED("MainViewController") +@interface BFPMainViewController : NSViewController +@property (nonatomic, weak) IBOutlet BFPFontListTableView * _Null_unspecified tableView; +@property (nonatomic, weak) IBOutlet NSSearchField * _Null_unspecified searchField; +@property (nonatomic, weak) IBOutlet id _Nullable delegate; +@property (nonatomic, copy) NSArray> * _Nonnull systemFontDataSources; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (nonnull instancetype)initWithNibName:(NSNibName _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (void)awakeFromNib; +- (void)controlTextDidChange:(NSNotification * _Nonnull)obj; +- (void)viewWillAppear; +@end + + +@class NSTextField; + +SWIFT_CLASS_NAMED("SizePickerView") +@interface BFPSizePickerView : NSView +@property (nonatomic, weak) id _Nullable delegate; +@property (nonatomic) double size; +@property (nonatomic, readonly) NSSize fittingSize; +@property (nonatomic, readonly, strong) NSTextField * _Nonnull textField; +- (void)clampWithMin:(NSInteger)min max:(NSInteger)max; +- (nonnull instancetype)initWithFrame:(NSRect)frameRect OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)decoder OBJC_DESIGNATED_INITIALIZER; +- (void)resizeSubviewsWithOldSize:(NSSize)oldSize; +- (void)stepper:(id _Nullable)sender; +- (void)controlTextDidEndEditing:(NSNotification * _Nonnull)obj; +- (void)controlTextDidChange:(NSNotification * _Nonnull)obj; +@end + + +@class NSTableRowView; +@class NSTableColumn; + +SWIFT_CLASS_NAMED("TableViewController") +@interface BFPTableViewController : NSViewController +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (void)viewDidLayout; +- (NSInteger)numberOfRowsInTableView:(NSTableView * _Nonnull)tableView SWIFT_WARN_UNUSED_RESULT; +- (NSTableRowView * _Nullable)tableView:(NSTableView * _Nonnull)tableView rowViewForRow:(NSInteger)row SWIFT_WARN_UNUSED_RESULT; +- (NSView * _Nullable)tableView:(NSTableView * _Nonnull)tableView viewForTableColumn:(NSTableColumn * _Nullable)tableColumn row:(NSInteger)row SWIFT_WARN_UNUSED_RESULT; +- (CGFloat)tableView:(NSTableView * _Nonnull)tableView heightOfRow:(NSInteger)row SWIFT_WARN_UNUSED_RESULT; +- (BOOL)tableView:(NSTableView * _Nonnull)tableView shouldSelectRow:(NSInteger)row SWIFT_WARN_UNUSED_RESULT; +- (void)tableViewSelectionDidChange:(NSNotification * _Nonnull)notification; +- (nonnull instancetype)initWithNibName:(NSNibName _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE; +@end + +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#pragma clang diagnostic pop +#endif + +#endif diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo new file mode 100644 index 0000000000..363b4003d7 Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/arm64.swiftsourceinfo b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/arm64.swiftsourceinfo new file mode 100644 index 0000000000..363b4003d7 Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/arm64.swiftsourceinfo differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo new file mode 100644 index 0000000000..68994f62a9 Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/x86_64.swiftsourceinfo b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/x86_64.swiftsourceinfo new file mode 100644 index 0000000000..68994f62a9 Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/Project/x86_64.swiftsourceinfo differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64-apple-macos.swiftdoc b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64-apple-macos.swiftdoc new file mode 100644 index 0000000000..bc0502b77a Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64-apple-macos.swiftdoc differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64-apple-macos.swiftmodule b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64-apple-macos.swiftmodule new file mode 100644 index 0000000000..12ca839b95 Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64-apple-macos.swiftmodule differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64.swiftdoc b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..bc0502b77a Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64.swiftdoc differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64.swiftmodule b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..12ca839b95 Binary files /dev/null and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/arm64.swiftmodule differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftdoc b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftdoc index 4e69bffa83..e080669f43 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftdoc and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftdoc differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftmodule b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftmodule index 001bf3995a..b731c0199f 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftmodule and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftmodule differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftdoc b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftdoc index 4e69bffa83..e080669f43 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftdoc and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftdoc differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftmodule b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftmodule index 001bf3995a..b731c0199f 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftmodule and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Modules/BetterFontPicker.swiftmodule/x86_64.swiftmodule differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/EmptyStar.tiff b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/EmptyStar.tiff index b1ba44138c..a2ebfba297 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/EmptyStar.tiff and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/EmptyStar.tiff differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/FilledStar.tiff b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/FilledStar.tiff index 18d73d649a..ea5ab10588 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/FilledStar.tiff and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/FilledStar.tiff differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/HorizontalSpacingIcon.tiff b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/HorizontalSpacingIcon.tiff index b37262d64f..08f15ab929 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/HorizontalSpacingIcon.tiff and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/HorizontalSpacingIcon.tiff differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/Info.plist b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/Info.plist index 55c38dbf1e..f60ad2b73b 100644 --- a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/Info.plist +++ b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 19C57 + 20A5299w CFBundleDevelopmentRegion en CFBundleExecutable @@ -27,17 +27,19 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 11C504 + 12A8158a + DTPlatformName + macosx DTPlatformVersion - GM + 11.0 DTSDKBuild - 19B90 + 20A5299v DTSDKName - macosx10.15 + macosx11.0 DTXcode - 1130 + 1200 DTXcodeBuild - 11C504 + 12A8158a LSMinimumSystemVersion 10.12 NSHumanReadableCopyright diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/MainViewController.nib b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/MainViewController.nib index 417ac28ed1..33a3140d82 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/MainViewController.nib and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/MainViewController.nib differ diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/VerticalSpacingIcon.tiff b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/VerticalSpacingIcon.tiff index 384fa07581..4be56ac2cf 100644 Binary files a/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/VerticalSpacingIcon.tiff and b/BetterFontPicker/BetterFontPicker.framework/Versions/A/Resources/VerticalSpacingIcon.tiff differ diff --git a/BetterFontPicker/BetterFontPicker.xcodeproj/project.pbxproj b/BetterFontPicker/BetterFontPicker.xcodeproj/project.pbxproj index 79785c1d10..d128f36754 100644 --- a/BetterFontPicker/BetterFontPicker.xcodeproj/project.pbxproj +++ b/BetterFontPicker/BetterFontPicker.xcodeproj/project.pbxproj @@ -454,10 +454,10 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = H7V7XYVQ7D; + DEVELOPMENT_TEAM = 6N425KH923; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -483,11 +483,11 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = H7V7XYVQ7D; + DEVELOPMENT_TEAM = 6N425KH923; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; diff --git a/ColorPicker/ColorPicker.framework/Versions/A/ColorPicker b/ColorPicker/ColorPicker.framework/Versions/A/ColorPicker index 86379c9aa8..9b370bea2e 100755 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/ColorPicker and b/ColorPicker/ColorPicker.framework/Versions/A/ColorPicker differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEscapeHatch.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEscapeHatch.tiff index 985a63ede0..eed00aa8cd 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEscapeHatch.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEscapeHatch.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEyedropper.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEyedropper.tiff index d66b14ef61..cbcec093ee 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEyedropper.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/ActiveEyedropper.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Add.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Add.tiff index 23b9147136..6dde86a5c3 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Add.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Add.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/EscapeHatch.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/EscapeHatch.tiff index 5fa8561a0d..ec70c50c20 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/EscapeHatch.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/EscapeHatch.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Eyedropper.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Eyedropper.tiff index 023ea812d0..1d45a7fff1 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Eyedropper.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Eyedropper.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/HSB.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/HSB.tiff index ea9ccf9dd2..ea610d78c0 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/HSB.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/HSB.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Info.plist b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Info.plist index 0a8d16813d..0aa0cf339a 100644 --- a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Info.plist +++ b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 19B2106 + 20A5299w CFBundleDevelopmentRegion en CFBundleExecutable @@ -29,17 +29,19 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 11C29 + 12A8158a + DTPlatformName + macosx DTPlatformVersion - GM + 11.0 DTSDKBuild - 19B90 + 20A5299v DTSDKName - macosx10.15 + macosx11.0 DTXcode - 1130 + 1200 DTXcodeBuild - 11C29 + 12A8158a LSMinimumSystemVersion 10.8 NSHumanReadableCopyright diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/NoColor.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/NoColor.tiff index bf1c05a197..e380d978b9 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/NoColor.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/NoColor.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/RGB.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/RGB.tiff index 2e8cf187bb..0a7950df3e 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/RGB.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/RGB.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Remove.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Remove.tiff index 110aa10793..4938469a6c 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/Remove.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/Remove.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectedColorIndicator.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectedColorIndicator.tiff index d87d3f0738..b928244af7 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectedColorIndicator.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectedColorIndicator.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectionIndicator.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectionIndicator.tiff index 24050d2f72..d9c008f5df 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectionIndicator.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/SelectionIndicator.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/Resources/SwatchCheckerboard.tiff b/ColorPicker/ColorPicker.framework/Versions/A/Resources/SwatchCheckerboard.tiff index 019416283c..6f77eb8d9a 100644 Binary files a/ColorPicker/ColorPicker.framework/Versions/A/Resources/SwatchCheckerboard.tiff and b/ColorPicker/ColorPicker.framework/Versions/A/Resources/SwatchCheckerboard.tiff differ diff --git a/ColorPicker/ColorPicker.framework/Versions/A/_CodeSignature/CodeResources b/ColorPicker/ColorPicker.framework/Versions/A/_CodeSignature/CodeResources index 929cc170d7..2f112bd51b 100644 --- a/ColorPicker/ColorPicker.framework/Versions/A/_CodeSignature/CodeResources +++ b/ColorPicker/ColorPicker.framework/Versions/A/_CodeSignature/CodeResources @@ -6,55 +6,55 @@ Resources/ActiveEscapeHatch.tiff - 6WmxLCzSt4oIaZNbKwif1B8peII= + M+n6oeNPc+7qb01oOZ+/SngpN8o= Resources/ActiveEyedropper.tiff - aUsRWUoPetO6lMOsxV9Z0pH6Bvw= + jh5/cNHWR9P1eep8um0SoHvsUhE= Resources/Add.tiff - k5aECgZsAqLVFOPjDA7GSbAL9dc= + dP2bHOAfoAnTEIi/fUM0+ykkqVM= Resources/EscapeHatch.tiff - 04OY3jksUZgmDmGatkXv6JPR4Zo= + zM1bHU/OJJIVm8ubB+CMelGwCmo= Resources/Eyedropper.tiff - bSXOoMColHgdp7UKxAZm08u9qG0= + svESo5A35iVh3NNP0OwplJ6lmgc= Resources/HSB.tiff - xoeMQ86SkmQucwko7QeImz5ICOM= + YKrRyXOnBuLKegGjOeK1t2p/qY0= Resources/Info.plist - EKkSO/wV6gjoQGq2yiQYDi6hPsQ= + GrirCxKowsgExoFSvzx5V2Xuxns= Resources/NoColor.tiff - WesYwCs3kX+AYp0+6g93iyKwvQQ= + p3rKJ0lK1bmb7lcjltcGWVb2WQ0= Resources/RGB.tiff - Sh65j4k2GnRtNeH6k+a60kqDVLM= + PcKifnTibU26Bd1FWWkXmNvOMqI= Resources/Remove.tiff - oN0FUlBJrkrubN0i9uA7ZZLIZog= + DxOO3R2htDVMU0mLNJ5rE+Fgp7Q= Resources/SelectedColorIndicator.tiff - B5r+wjlyAuNiZy5wF2KqsNWWV6I= + ic3rsNp+9wU57AbA5vS+oTdb9EY= Resources/SelectionIndicator.tiff - LDSYw2bEW0PmGiyvLcq3fSSllOE= + TDQynZAQGoU4Aze9B09sTuPGA5M= Resources/SwatchCheckerboard.tiff - sNbbHq4KQCYjpYtCytXlbhLh4MQ= + EtJfreXRMmuxP7YCn+PoEbDvP5U= Resources/colors.txt @@ -65,10 +65,6 @@ Headers/CPKColorWell.h - hash - - Ngs7+pGdW2Z8MoEp2CxfTFzX8Yk= - hash2 w9o9t8MqyYmxgnCN65JhMU4v63ZRQBa1rnZAghpaUPw= @@ -76,10 +72,6 @@ Headers/CPKMainViewController.h - hash - - zhiC1Oc/YgN72N6w0bKEHupmD+w= - hash2 L3X0u3nZocrlWMxFAsYlJPqXsEydR4nGlK+b9sxeKRg= @@ -87,10 +79,6 @@ Headers/CPKPopover.h - hash - - f7zbYwVKvB7ZND/sC4Pj50I/9y4= - hash2 n9MehAkWCzNNLP3bNENu8Qel1IykGPaWMBtcxjUEFo8= @@ -98,10 +86,6 @@ Headers/CPKSwatchView.h - hash - - G5rms+g0oeVMuXolywch0A1long= - hash2 a5kUWxysM08DuLKk+6agXb0el5TZFnGCeg6aIKTyTy8= @@ -109,10 +93,6 @@ Headers/ColorPicker.h - hash - - SOSf8ccR75eYSXUeERz7ER1Lrew= - hash2 5YMq3fVLyvRpil0CHDSnyEy9jD+WGD4Acm4lThrpAaE= @@ -120,10 +100,6 @@ Modules/module.modulemap - hash - - iNMdhhjmnc1rt+nUIWipyHrrmHc= - hash2 QEpt/QpVU+ZCBHk/L++aAv+9quLGu2WNLoxvf2VVR5Y= @@ -131,153 +107,97 @@ Resources/ActiveEscapeHatch.tiff - hash - - 6WmxLCzSt4oIaZNbKwif1B8peII= - hash2 - oKgSr9w4xJCuI9tuFhHxa6g62OaZZ+zhB53O50DcHcA= + xITnmfs4qWbwjdb1LI4G3Vi3CI0zgSMoXvKYG01/PTg= Resources/ActiveEyedropper.tiff - hash - - aUsRWUoPetO6lMOsxV9Z0pH6Bvw= - hash2 - vjSyijpwiGdeMhLqjsf73nc1GDysbOrgADitHXa2VGc= + w9tSdqgmh0MzOion17ZpxMsd+/6c3rRQFmZnwXbQI2w= Resources/Add.tiff - hash - - k5aECgZsAqLVFOPjDA7GSbAL9dc= - hash2 - obFKxLXZVvDFsG5iRHNCuXp1+t4rrXLFe5Irxc3UIXk= + /CgXmLDshRXazCYQexwQ6y0RIYLi6uChOBD9My2A24Y= Resources/EscapeHatch.tiff - hash - - 04OY3jksUZgmDmGatkXv6JPR4Zo= - hash2 - l7JMkFkdxVTIUJkaEFFITSaf1iBYZ9rGuou0Y8R51ZQ= + ZdT/6PmUsbTz6GSKnkI6mG1tVmRbtHROPHtn38f/GRU= Resources/Eyedropper.tiff - hash - - bSXOoMColHgdp7UKxAZm08u9qG0= - hash2 - bqBEZduijW7d6BUS2KiXxA76J8wAYcJUsh+K8raCjbg= + SlNk/DPa6BDrqqBRkRIsVHhQHsijfY6bfFhoZFnMrYA= Resources/HSB.tiff - hash - - xoeMQ86SkmQucwko7QeImz5ICOM= - hash2 - RcxeOdmrwv1LSyBsRaIdgF3Ewt++m4SKx2PsuYfN9hQ= + 6tWBXc9SpzgS5snaMF5X2sXdKOMIDrNt5Ix4Vmh07Nk= Resources/Info.plist - hash - - EKkSO/wV6gjoQGq2yiQYDi6hPsQ= - hash2 - V3RuhE/5vT/LqcEIp7wG1XepPOb8WbTRFErBaiMrNcw= + I7RygYzZ9rJGPuLKNh3ukmGRytC+gQ8PTo3kOWcblq4= Resources/NoColor.tiff - hash - - WesYwCs3kX+AYp0+6g93iyKwvQQ= - hash2 - l6ATOdw4ahmpxnzah9dob/+V3lhTgNYMOAoXmYlXV70= + +uFza8vncHcIMWIJdLDU0juPkZjRLM8zpTE13IGY3yM= Resources/RGB.tiff - hash - - Sh65j4k2GnRtNeH6k+a60kqDVLM= - hash2 - RXsLAkufyGKKZnkqBLybrWTI2igHOi9aYnTXWtzbRwA= + yySH/Fn8A6y7Nw1bDCdlHD+XNpbFLmdhh5qU1daXP3w= Resources/Remove.tiff - hash - - oN0FUlBJrkrubN0i9uA7ZZLIZog= - hash2 - le9ZIGbS9nPsyd8uS1kXNWH/GBAwgzWxuFsbj0/iBdg= + bRt9WnYlVbStldIxrwMY6ez47dd2TTO9ItsmASXkURY= Resources/SelectedColorIndicator.tiff - hash - - B5r+wjlyAuNiZy5wF2KqsNWWV6I= - hash2 - luBNIjXhzjoqE5SZ1byrVPlR2JDQm1WUfQlOi9P1GXA= + T+l2LsKwyjSYt7sL1yX2pnqaDpmZIbO7MdyDU+ovhLc= Resources/SelectionIndicator.tiff - hash - - LDSYw2bEW0PmGiyvLcq3fSSllOE= - hash2 - 8DtMXHHcNRUW5yuTLqYgyG68LzLTc5/GfzPcftZqLBE= + eA0/WWA/qEfflTAUaeyfpDCb+ajHirX9/UqZutn8wjA= Resources/SwatchCheckerboard.tiff - hash - - sNbbHq4KQCYjpYtCytXlbhLh4MQ= - hash2 - aMbxryRTZxbd1pUQwUvpSAxVX4+UlP6gLZcKF7z7OWs= + 1/UDVyj8DveKEQy4qb4YPkWqAvYynO4Ul8SeCQmi1vI= Resources/colors.txt - hash - - 8fO3WxKqBDTf9FVJiM66lUAvOYM= - hash2 kyOjG/HnmRXaAkNX4IIrDP5Prg2oJS/M1VEeCeYhDJw= diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Headers/SearchableComboListView-Swift.h b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Headers/SearchableComboListView-Swift.h index 3ccf57915e..87830ed3dc 100644 --- a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Headers/SearchableComboListView-Swift.h +++ b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Headers/SearchableComboListView-Swift.h @@ -1,4 +1,8 @@ -// Generated by Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15) +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.3 (swiftlang-1200.0.16.13 clang-1200.0.22.19) +#ifndef SEARCHABLECOMBOLISTVIEW_SWIFT_H +#define SEARCHABLECOMBOLISTVIEW_SWIFT_H #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wgcc-compat" @@ -82,6 +86,11 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOESCAPE #endif +#if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +# define SWIFT_RELEASES_ARGUMENT +#endif #if __has_attribute(warn_unused_result) # define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #else @@ -220,6 +229,264 @@ SWIFT_CLASS_NAMED("SearchableComboView") @end +@class iTermSearchableComboViewItem; + +SWIFT_PROTOCOL_NAMED("SearchableComboViewDelegate") +@protocol iTermSearchableComboViewDelegate +- (void)searchableComboView:(iTermSearchableComboView * _Nonnull)view didSelectItem:(iTermSearchableComboViewItem * _Nullable)didSelectItem; +@end + + +SWIFT_CLASS_NAMED("SearchableComboViewGroup") +@interface iTermSearchableComboViewGroup : NSObject +- (nonnull instancetype)initWithLabel:(NSString * _Nonnull)label items:(NSArray * _Nonnull)items OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_CLASS_NAMED("SearchableComboViewItem") +@interface iTermSearchableComboViewItem : NSObject +- (nonnull instancetype)initWithLabel:(NSString * _Nonnull)label tag:(NSInteger)tag OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#pragma clang diagnostic pop +#endif + +#elif defined(__x86_64__) && __x86_64__ +// Generated by Apple Swift version 5.3 (swiftlang-1200.0.16.13 clang-1200.0.22.19) +#ifndef SEARCHABLECOMBOLISTVIEW_SWIFT_H +#define SEARCHABLECOMBOLISTVIEW_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +# define SWIFT_RELEASES_ARGUMENT +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#if __has_feature(modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import AppKit; +@import Foundation; +@import ObjectiveC; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SearchableComboListView",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +@protocol iTermSearchableComboViewDelegate; +@class NSCoder; +@class iTermSearchableComboViewGroup; +@class NSMenu; +@class NSEvent; + +SWIFT_CLASS_NAMED("SearchableComboView") +@interface iTermSearchableComboView : NSPopUpButton +@property (nonatomic, weak) id _Nullable delegate; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (nonnull instancetype)initWithGroups:(NSArray * _Nonnull)groups OBJC_DESIGNATED_INITIALIZER; +- (BOOL)selectItemWithTag:(NSInteger)tag SWIFT_WARN_UNUSED_RESULT; +- (NSInteger)selectedTag SWIFT_WARN_UNUSED_RESULT; +- (void)willOpenMenu:(NSMenu * _Nonnull)menu withEvent:(NSEvent * _Nonnull)event; +- (nonnull instancetype)initWithFrame:(NSRect)buttonFrame pullsDown:(BOOL)flag SWIFT_UNAVAILABLE; +- (nonnull instancetype)initWithFrame:(NSRect)frameRect SWIFT_UNAVAILABLE; +@end + @class iTermSearchableComboViewItem; @@ -248,3 +515,6 @@ SWIFT_CLASS_NAMED("SearchableComboViewItem") # pragma clang attribute pop #endif #pragma clang diagnostic pop +#endif + +#endif diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo new file mode 100644 index 0000000000..5142a3a9d4 Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/arm64.swiftsourceinfo b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/arm64.swiftsourceinfo new file mode 100644 index 0000000000..5142a3a9d4 Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/arm64.swiftsourceinfo differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo new file mode 100644 index 0000000000..c31aabfb35 Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/x86_64.swiftsourceinfo b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/x86_64.swiftsourceinfo new file mode 100644 index 0000000000..c31aabfb35 Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/Project/x86_64.swiftsourceinfo differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftdoc b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftdoc new file mode 100644 index 0000000000..101e341873 Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftdoc differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftmodule b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftmodule new file mode 100644 index 0000000000..ebfde167da Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftmodule differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64.swiftdoc b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..101e341873 Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64.swiftdoc differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64.swiftmodule b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..ebfde167da Binary files /dev/null and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/arm64.swiftmodule differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftdoc b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftdoc index a286ca39ac..3aa009ccd4 100644 Binary files a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftdoc and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftdoc differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftmodule b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftmodule index a7d762c1ca..a4c20cc3c7 100644 Binary files a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftmodule and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftmodule differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftdoc b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftdoc index a286ca39ac..3aa009ccd4 100644 Binary files a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftdoc and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftdoc differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftmodule b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftmodule index a7d762c1ca..a4c20cc3c7 100644 Binary files a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftmodule and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Modules/SearchableComboListView.swiftmodule/x86_64.swiftmodule differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/Info.plist b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/Info.plist index ba725c5995..0f7b0f7db3 100644 --- a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/Info.plist +++ b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 19E287 + 20A5299w CFBundleDevelopmentRegion en CFBundleExecutable @@ -27,17 +27,19 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 11C504 + 12A8158a + DTPlatformName + macosx DTPlatformVersion - GM + 11.0 DTSDKBuild - 19B90 + 20A5299v DTSDKName - macosx10.15 + macosx11.0 DTXcode - 1130 + 1200 DTXcodeBuild - 11C504 + 12A8158a LSMinimumSystemVersion 10.12 diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/SearchableComboView.nib b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/SearchableComboView.nib index b7d4476b23..e52e812f9e 100644 Binary files a/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/SearchableComboView.nib and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/Resources/SearchableComboView.nib differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/SearchableComboListView b/SearchableComboListView/SearchableComboListView.framework/Versions/A/SearchableComboListView index 7a98c534cc..9bc3e57175 100755 Binary files a/SearchableComboListView/SearchableComboListView.framework/Versions/A/SearchableComboListView and b/SearchableComboListView/SearchableComboListView.framework/Versions/A/SearchableComboListView differ diff --git a/SearchableComboListView/SearchableComboListView.framework/Versions/A/_CodeSignature/CodeResources b/SearchableComboListView/SearchableComboListView.framework/Versions/A/_CodeSignature/CodeResources index a0f874fc73..6496586c58 100644 --- a/SearchableComboListView/SearchableComboListView.framework/Versions/A/_CodeSignature/CodeResources +++ b/SearchableComboListView/SearchableComboListView.framework/Versions/A/_CodeSignature/CodeResources @@ -6,11 +6,11 @@ Resources/Info.plist - nt62Bg45BQngKtniwzanjJGiQ/E= + PWUdR87HG37sn/g5RgVdlkxTy20= Resources/SearchableComboView.nib - I/SswULRR58vIXnxL6oZvN2zyOQ= + RWyxZvcNNvC+oTnZkwJ4DbflECI= files2 @@ -19,7 +19,7 @@ hash2 - eXt7Od+3YsIJkFO8gyiopTiOhR8uNxluDePN9mYgQ68= + RTqAC4OwwLGbE4mKD2zcxk3iQqtbBwsFCRUuWk6IM60= Headers/SearchableComboListView.h @@ -29,32 +29,88 @@ UBixuVPvdND7roZluOHTE+2RiqNm/XSDqY0FDlLzlxU= + Modules/SearchableComboListView.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo + + hash2 + + qK6A2/kko96CnO8Rogcr3of3O03qPjNWdi7hjDukmrY= + + + Modules/SearchableComboListView.swiftmodule/Project/arm64.swiftsourceinfo + + hash2 + + qK6A2/kko96CnO8Rogcr3of3O03qPjNWdi7hjDukmrY= + + + Modules/SearchableComboListView.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo + + hash2 + + A/bRhJEiYTOqJ/AoO10Q2tkprbuqKKCjZvX8MljDmgU= + + + Modules/SearchableComboListView.swiftmodule/Project/x86_64.swiftsourceinfo + + hash2 + + A/bRhJEiYTOqJ/AoO10Q2tkprbuqKKCjZvX8MljDmgU= + + + Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftdoc + + hash2 + + aUjPC0Ph3WoMzwuJFxT9mGoCUfYjpyiFStOBTWj4Mj4= + + + Modules/SearchableComboListView.swiftmodule/arm64-apple-macos.swiftmodule + + hash2 + + VXhI/HNN/aanAUgOUfYkIdvYxk+u86GYvO/THVM0xJU= + + + Modules/SearchableComboListView.swiftmodule/arm64.swiftdoc + + hash2 + + aUjPC0Ph3WoMzwuJFxT9mGoCUfYjpyiFStOBTWj4Mj4= + + + Modules/SearchableComboListView.swiftmodule/arm64.swiftmodule + + hash2 + + VXhI/HNN/aanAUgOUfYkIdvYxk+u86GYvO/THVM0xJU= + + Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftdoc hash2 - pGYli2UJV1q6a63HBnxBSb1oAEnDZ6WW5eV181/KP8M= + InIwwezhlW1YLEO+8D3lNBS2t498OBXzvrgywhV8KXc= Modules/SearchableComboListView.swiftmodule/x86_64-apple-macos.swiftmodule hash2 - lPz57Z+Bi2fKUVPzwYiEDbED5Hfd9AK2EsaG0ruUxmw= + oQxXMLPo8SAUJ4SVyzUjYEiNX1blSwBWCFOwOR4OqvU= Modules/SearchableComboListView.swiftmodule/x86_64.swiftdoc hash2 - pGYli2UJV1q6a63HBnxBSb1oAEnDZ6WW5eV181/KP8M= + InIwwezhlW1YLEO+8D3lNBS2t498OBXzvrgywhV8KXc= Modules/SearchableComboListView.swiftmodule/x86_64.swiftmodule hash2 - lPz57Z+Bi2fKUVPzwYiEDbED5Hfd9AK2EsaG0ruUxmw= + oQxXMLPo8SAUJ4SVyzUjYEiNX1blSwBWCFOwOR4OqvU= Modules/module.modulemap @@ -68,14 +124,14 @@ hash2 - hmjYme1DPLd+AwtC2V0fkua8/fS+FdYn7Zz4C/hlJ/Y= + e0bsrN5JcX3FI5x/pD1urZdJXLMvtpRhpi+WHA4fNQA= Resources/SearchableComboView.nib hash2 - QfP9t7A5gsgT0d24dDCFJaBhFpJfzLKAP8ZYQ3Qn7Ns= + sGKiBsZVWA6ACOudMKHknyLx5pvOHwjWVppoQxm7AY4= diff --git a/ThirdParty/CoreParse.framework/Versions/A/CoreParse b/ThirdParty/CoreParse.framework/Versions/A/CoreParse index 02a4e6a9d7..f4eba2fcea 100755 Binary files a/ThirdParty/CoreParse.framework/Versions/A/CoreParse and b/ThirdParty/CoreParse.framework/Versions/A/CoreParse differ diff --git a/ThirdParty/CoreParse.framework/Versions/A/Headers/CPRegexpRecogniser.h b/ThirdParty/CoreParse.framework/Versions/A/Headers/CPRegexpRecogniser.h new file mode 100644 index 0000000000..48acf2e9f2 --- /dev/null +++ b/ThirdParty/CoreParse.framework/Versions/A/Headers/CPRegexpRecogniser.h @@ -0,0 +1,53 @@ +// +// CPRegexpRecogniser.h +// CoreParse +// +// Created by Francis Chong on 1/22/14. +// Copyright (c) 2014 Ignition Soft. All rights reserved. +// + +#import +#import "CPTokenRecogniser.h" + +typedef CPToken* (^CPRegexpKeywordRecogniserMatchHandler)(NSString* tokenString, NSTextCheckingResult* match); + +/** + * The CPRegexpRecogniser class attempts to recognise a specific NSRegularExpression. + * + * A regexp recogniser attempts to recognise a regexp. + * + * This recogniser produces a token via matchHandler. + */ +@interface CPRegexpRecogniser : NSObject + +@property (nonatomic, retain) NSRegularExpression* regexp; + +///--------------------------------------------------------------------------------------- +/// @name Creating and Initialising a Regexp Keyword Recogniser +///--------------------------------------------------------------------------------------- + +/** + * Initialises a Regexp Recogniser to recognise a specific regexp. + * + * @param regexp The NSRegularExpression to recognise. + * @param matchHandler A block that process first match result of the regular expression, and return a CPToken. + * + * @return Returns the regexp recogniser initialised to recognise the passed regexp. + * + * @see recogniserForRegexp: + */ +- (id)initWithRegexp:(NSRegularExpression *)regexp matchHandler:(CPRegexpKeywordRecogniserMatchHandler)matchHandler; + +/** + * Initialises a Regexp Recogniser to recognise a specific regexp. + * + * @param regexp The NSRegularExpression to recognise. + * @param matchHandler A block that process first match result of the regular expression, and return a CPToken. + * + * @return Returns the regexp recogniser initialised to recognise the passed regexp. + * + * @see initWithRegexp: + */ ++ (id)recogniserForRegexp:(NSRegularExpression *)regexp matchHandler:(CPRegexpKeywordRecogniserMatchHandler)matchHandler; + +@end diff --git a/ThirdParty/CoreParse.framework/Versions/A/Headers/CoreParse.h b/ThirdParty/CoreParse.framework/Versions/A/Headers/CoreParse.h index df26ac1a70..9da96bf515 100644 --- a/ThirdParty/CoreParse.framework/Versions/A/Headers/CoreParse.h +++ b/ThirdParty/CoreParse.framework/Versions/A/Headers/CoreParse.h @@ -16,6 +16,7 @@ #import "CPWhiteSpaceRecogniser.h" #import "CPIdentifierRecogniser.h" #import "CPQuotedRecogniser.h" +#import "CPRegexpRecogniser.h" #import "CPToken.h" #import "CPErrorToken.h" diff --git a/ThirdParty/CoreParse.framework/Versions/A/Resources/Info.plist b/ThirdParty/CoreParse.framework/Versions/A/Resources/Info.plist index f2462949d9..bc81e6c311 100644 --- a/ThirdParty/CoreParse.framework/Versions/A/Resources/Info.plist +++ b/ThirdParty/CoreParse.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 17E199 + 20A5299w CFBundleDevelopmentRegion English CFBundleExecutable @@ -29,17 +29,21 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 9E145 + 12A8158a + DTPlatformName + macosx DTPlatformVersion - GM + 11.0 DTSDKBuild - 17E189 + 20A5299v DTSDKName - macosx10.13 + macosx11.0 DTXcode - 0930 + 1200 DTXcodeBuild - 9E145 + 12A8158a + LSMinimumSystemVersion + 10.15 NSHumanReadableCopyright Copyright © 2011 In The Beginning... All rights reserved. diff --git a/ThirdParty/CoreParse.framework/Versions/A/_CodeSignature/CodeResources b/ThirdParty/CoreParse.framework/Versions/A/_CodeSignature/CodeResources new file mode 100644 index 0000000000..784632cefe --- /dev/null +++ b/ThirdParty/CoreParse.framework/Versions/A/_CodeSignature/CodeResources @@ -0,0 +1,360 @@ + + + + + files + + Resources/CoreParse-template.md + + 2jmj7l5rSw0yVb/vlWAYkK/YBwk= + + Resources/Info.plist + + XdjYX0a6nLNXgS7HeqiLkcdmzi4= + + Resources/en.lproj/InfoPlist.strings + + hash + + MiLKDDnrUKr4EmuvhS5VQwxHGK8= + + optional + + + + files2 + + Headers/CPEOFToken.h + + hash2 + + y8eD6EJU5bXWkpoiluAa0qiSq7BR/nc4ecl9IHyCkb4= + + + Headers/CPErrorToken.h + + hash2 + + P/AbejrjlykbR98a5yMZYGNWvHhn4pqikmt3GkLb5tE= + + + Headers/CPGrammar.h + + hash2 + + jtT6sOeVQ8ekb6aFXuFcipk1KdIJpQ0l39VR7HBJurc= + + + Headers/CPGrammarSymbol.h + + hash2 + + gKGhhYlY/GIJj4GzpsbU2mmAvCRvgJkILBa+UrVVVw0= + + + Headers/CPIdentifierRecogniser.h + + hash2 + + py/7FQqCdkEeRXlk4F4LtBHOssk9OKeGZ+CzYDIMhJo= + + + Headers/CPIdentifierToken.h + + hash2 + + qRzOjPfQmfNLTd5+xv/TEYzhpm3zekSGxCPewy4c4Rk= + + + Headers/CPJSONParser.h + + hash2 + + kfT3p3Mbydz/Nq0SBkFynLVNsdTvDuRRtwHPHLTyL6Y= + + + Headers/CPKeywordRecogniser.h + + hash2 + + rXn7ZIA/doBnPd4X64sKiPwuze+SxJfx9xRlepRdILY= + + + Headers/CPKeywordToken.h + + hash2 + + pLKaonJ+x6zmWXQ/Npm4uLM4sSUGhipMYd3FKDrRCC4= + + + Headers/CPLALR1Parser.h + + hash2 + + zfJaaGMOvNItnir1QSfrArx+OVY3pQmHV5yKTy4fNQQ= + + + Headers/CPLR1Parser.h + + hash2 + + ENNV9puXzGLtrAfoI5UoflXmbneqP24TwrMyUJTKI6o= + + + Headers/CPNumberRecogniser.h + + hash2 + + bc7q3Dt4dGN0LcuUFOhmUCuVBoZOwu3vAHBmIqGFPWE= + + + Headers/CPNumberToken.h + + hash2 + + 0Xd4NcJ/TnYtyNZfN/jG0Q3n4UuRt85CKZJmJM1I71M= + + + Headers/CPParser.h + + hash2 + + 7Ayna8NgUuvCjiU8ThvNjEU5ziTGeMndDI8H5OWXWfc= + + + Headers/CPQuotedRecogniser.h + + hash2 + + AAXzHFlLSMhCfCf0qVg3hu74AhOP7dktpfw5ZHJRf6A= + + + Headers/CPQuotedToken.h + + hash2 + + pfO7Ho0/j6H+NlLbx+Mpa6kxJ8tUGuieX4yQLS/byA0= + + + Headers/CPRecoveryAction.h + + hash2 + + qdklduMVaKZ8lTPigEz1l3+L8QyxhEvUR8xENjvFUtw= + + + Headers/CPRegexpRecogniser.h + + hash2 + + sghojk8Fma8/bHKopUnMTGEDlIRGbpRDr6wxtThbpRQ= + + + Headers/CPRule.h + + hash2 + + eJzzu5GWEw/F+pXDFU2ea9raq515cT0IKPZ4uFAD3yc= + + + Headers/CPSLRParser.h + + hash2 + + EHK/aSklJG6/Z+KBrQC4q79Vzwl/J6sm7ACmLm3B+qU= + + + Headers/CPShiftReduceParser.h + + hash2 + + JRhz8Q0v9RziWkMjdAq2Dbgi786MOQfVMJ0gnqFO+Ao= + + + Headers/CPSyntaxTree.h + + hash2 + + 0M0QxJ5gmTsNpoDYtS5/PqSw9fxhKHfdAK0PnG4dzc4= + + + Headers/CPToken.h + + hash2 + + m9NdUJhdaI18g8XwY1DdQnMpNgQoP+LhtRLLW8KuwhQ= + + + Headers/CPTokenRecogniser.h + + hash2 + + DAtAPOvsS61EqDG7B45nYJb9pSxoIqGrgBIIvfZqcD0= + + + Headers/CPTokenStream.h + + hash2 + + W7KMSx2PKFghqiJqfwdfXB488whJ54k7Y6qRVly17rI= + + + Headers/CPTokeniser.h + + hash2 + + OwfkC9ewGAPUn9bnrdhrCLMfVCtmd6Ktwm89fzhLvdw= + + + Headers/CPWhiteSpaceRecogniser.h + + hash2 + + j95M8/YxhojVLQMPxrCXhfFnRlmy7Y4UfV6r/PtBxko= + + + Headers/CPWhiteSpaceToken.h + + hash2 + + jdbkEoSRbPYY1vYco8MZWZT+Npk/1n/rpM0c62k5O0k= + + + Headers/CoreParse.h + + hash2 + + 6k+i3C1oboaBgLLCXXbtafS3G6gGunVOgUhp/ElNRaM= + + + Resources/CoreParse-template.md + + hash2 + + 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + + + Resources/Info.plist + + hash2 + + zddTevgp6ihULt2Ap9WdWtnmXfFYQwsgxW9cz6Mgbm0= + + + Resources/en.lproj/InfoPlist.strings + + hash2 + + Oc8u4Ht7Mz58F50L9NeYpbcq9qTlhPUeZCcDu/pPyCg= + + optional + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ThirdParty/NMSSH.framework/Versions/A/Headers/libssh2.h b/ThirdParty/NMSSH.framework/Versions/A/Headers/libssh2.h index edcdcf1ef7..d33df03c31 100644 --- a/ThirdParty/NMSSH.framework/Versions/A/Headers/libssh2.h +++ b/ThirdParty/NMSSH.framework/Versions/A/Headers/libssh2.h @@ -46,13 +46,13 @@ to make the BANNER define (used by src/session.c) be a valid SSH banner. Release versions have no appended strings and may of course not have dashes either. */ -#define LIBSSH2_VERSION "1.9.0_DEV" +#define LIBSSH2_VERSION "1.9.0" /* The numeric version number is also available "in parts" by using these defines: */ -#define LIBSSH2_VERSION_MAJOR 1 -#define LIBSSH2_VERSION_MINOR 9 -#define LIBSSH2_VERSION_PATCH 0 +#define LIBSSH2_VERSION_MAJOR 1 +#define LIBSSH2_VERSION_MINOR 9 +#define LIBSSH2_VERSION_PATCH 0 /* This is the numeric version of the libssh2 version number, meant for easier parsing and comparions by programs. The LIBSSH2_VERSION_NUM define will @@ -69,7 +69,7 @@ and it is always a greater number in a more recent release. It makes comparisons with greater than and less than work. */ -#define LIBSSH2_VERSION_NUM 0x010900 +#define LIBSSH2_VERSION_NUM 0x010900 /* * This is the date and time when the full source package was created. The @@ -80,7 +80,7 @@ * * "Mon Feb 12 11:35:33 UTC 2007" */ -#define LIBSSH2_TIMESTAMP "DEV" +#define LIBSSH2_TIMESTAMP "Thu Jun 20 06:19:26 UTC 2019" #ifndef RC_INVOKED diff --git a/ThirdParty/NMSSH.framework/Versions/A/NMSSH b/ThirdParty/NMSSH.framework/Versions/A/NMSSH index e41092915c..559d2525b3 100755 Binary files a/ThirdParty/NMSSH.framework/Versions/A/NMSSH and b/ThirdParty/NMSSH.framework/Versions/A/NMSSH differ diff --git a/ThirdParty/NMSSH.framework/Versions/A/Resources/Info.plist b/ThirdParty/NMSSH.framework/Versions/A/Resources/Info.plist index c5005e22a2..325eca83bd 100644 --- a/ThirdParty/NMSSH.framework/Versions/A/Resources/Info.plist +++ b/ThirdParty/NMSSH.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 18G84 + 20A5299w CFBundleDevelopmentRegion English CFBundleExecutable @@ -29,17 +29,21 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 10E125 + 12A8158a + DTPlatformName + macosx DTPlatformVersion - GM + 11.0 DTSDKBuild - 18E219 + 20A5299v DTSDKName - macosx10.14 + macosx11.0 DTXcode - 1020 + 1200 DTXcodeBuild - 10E125 + 12A8158a + LSMinimumSystemVersion + 10.12 NSHumanReadableCopyright Copyright © 2012 Nine Muses AB. All rights reserved. diff --git a/BetterFontPicker/BetterFontPicker.framework/Versions/A/_CodeSignature/CodeResources b/ThirdParty/NMSSH.framework/Versions/A/_CodeSignature/CodeResources similarity index 63% rename from BetterFontPicker/BetterFontPicker.framework/Versions/A/_CodeSignature/CodeResources rename to ThirdParty/NMSSH.framework/Versions/A/_CodeSignature/CodeResources index 0b151ec0ed..f4ea372cbe 100644 --- a/BetterFontPicker/BetterFontPicker.framework/Versions/A/_CodeSignature/CodeResources +++ b/ThirdParty/NMSSH.framework/Versions/A/_CodeSignature/CodeResources @@ -4,122 +4,102 @@ files - Resources/EmptyStar.tiff - - 8SymClrPmSuBjkFtMC0DfuyHSIY= - - Resources/FilledStar.tiff - - IBGLnc11/PM9TWva+mqBCR1uVc4= - - Resources/HorizontalSpacingIcon.tiff - - EuQQuKDASwyLA5ody+tSTU2LSxw= - Resources/Info.plist - ddp9NfdYHyH1wxpCEHGS+9CIQCw= - - Resources/MainViewController.nib - - H1S4DKObOww4sGAywahPbS/hCtM= - - Resources/VerticalSpacingIcon.tiff - - HQxLT36gSkg1q4l0nu6eMtchiwI= + AeziUqHTNeD/tpo9ypmj9gThzFU= files2 - Headers/BetterFontPicker-Swift.h + Headers/NMSFTP.h hash2 - ymQMmlP0rXKapU++eoer2L6RuLbH0lqrSFiWqjaCa20= + ypzVhEFHKs1wCtsZDoHgh/JVKK0kYm3DOgM28MkE+Kc= - Headers/BetterFontPicker.h + Headers/NMSFTPFile.h hash2 - 8jqMWUA2CTUlu5XlhSjQOWekKSw5cQOii/umJSlzeIA= + yggeElDuCNbnSt9rzx0JRygVOm1DpK5v8jqN38evE20= - Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftdoc + Headers/NMSSH.h hash2 - N2kO8Ii19Ou5qDd48tDPbMTVR/Ty221vW+/V8XVFatE= + tqp7UQjc7P7mRFTSWHLD4s5O543cq5I2QUtWsQQS23k= - Modules/BetterFontPicker.swiftmodule/x86_64-apple-macos.swiftmodule + Headers/NMSSHChannel.h hash2 - w8LRQP34I5XJjxTS1mx/EKvl8QsMe1JSUkyIPfKCr/4= + 9lwb+D3r6IHEA74nwBdbY/+1fSg9B1g1h+XI57PwEXE= - Modules/BetterFontPicker.swiftmodule/x86_64.swiftdoc + Headers/NMSSHChannelDelegate.h hash2 - N2kO8Ii19Ou5qDd48tDPbMTVR/Ty221vW+/V8XVFatE= + CV9O5ZU06cPSFpEm84+JpTemgWtaIgeTLBxFcovn1fY= - Modules/BetterFontPicker.swiftmodule/x86_64.swiftmodule + Headers/NMSSHConfig.h hash2 - w8LRQP34I5XJjxTS1mx/EKvl8QsMe1JSUkyIPfKCr/4= + F+uMN0eeNk8nJXBWIVLh3iDuMwSkDF4J1UYK6zEjYVQ= - Modules/module.modulemap + Headers/NMSSHHostConfig.h hash2 - uaw/k2w8D4Iklj7MyPsqTceQ66ltvO8Dsh7r4l5TsXo= + Es5xL1F8pR2NMoMwg4DEZEUw6vHQ2Tps/5mNcaiTmrc= - Resources/EmptyStar.tiff + Headers/NMSSHLogger.h hash2 - 1pGf9Gx9s/UEnymjh1xcCqsmCEIRAks7ypqrAoqQwls= + QrlsDCDzWXJ6QBtCCY5ITWRone18yjPTRfpAcS7jBcI= - Resources/FilledStar.tiff + Headers/NMSSHSession.h hash2 - w4jtcPFdSQaHpFEf+59VkXnTLoDWSjNwJjODkhlmrmk= + 2WNVTZcSz46OD/O7k17Xv5Ayiqx/xUajHxdOqH5vvv8= - Resources/HorizontalSpacingIcon.tiff + Headers/NMSSHSessionDelegate.h hash2 - 6xUmfrhHENOavjJHAtZC5Fs2tB156y1dGeVlhWrnXbw= + 4JD/zmvf2C6HGQlDey7bTmqQSfvzQoeY70/g17UUFhI= - Resources/Info.plist + Headers/libssh2.h hash2 - ldj21x9bq2iOtGZnnIhko4PMJcIiMys/nuUUA/3RX5o= + LPmklAJy2ubpBXJIlS202ZdVW61q6gdkt4ALXEOClZg= - Resources/MainViewController.nib + Headers/libssh2_sftp.h hash2 - 9JbPRi6rwcgtGBSegxta1ui5YNYK+AQnEQrD3x+aKo8= + sLM5uURSfd9G4xNuEXw09UONzLXhdbnJAmfQgx3FGsM= - Resources/VerticalSpacingIcon.tiff + Resources/Info.plist hash2 - InEzus9I85kBW4Ssi3CaiO1ZpM7M13skn40XSx7ZIOs= + Klj+lpXL6b9QPDAPu2RuSngHHRSwSoaOtHeognh9uGw= diff --git a/ThirdParty/RegexKitLite/._License.html b/ThirdParty/RegexKitLite/._License.html deleted file mode 100644 index 0290964918..0000000000 Binary files a/ThirdParty/RegexKitLite/._License.html and /dev/null differ diff --git a/ThirdParty/RegexKitLite/._License.rtf b/ThirdParty/RegexKitLite/._License.rtf deleted file mode 100644 index cec4b295e2..0000000000 Binary files a/ThirdParty/RegexKitLite/._License.rtf and /dev/null differ diff --git a/ThirdParty/RegexKitLite/._RegexKitLite.html b/ThirdParty/RegexKitLite/._RegexKitLite.html deleted file mode 100644 index d799818489..0000000000 Binary files a/ThirdParty/RegexKitLite/._RegexKitLite.html and /dev/null differ diff --git a/ThirdParty/RegexKitLite/._RegexKitLite.m b/ThirdParty/RegexKitLite/._RegexKitLite.m deleted file mode 100644 index cd2051dc34..0000000000 Binary files a/ThirdParty/RegexKitLite/._RegexKitLite.m and /dev/null differ diff --git a/ThirdParty/RegexKitLite/._examples b/ThirdParty/RegexKitLite/._examples deleted file mode 100755 index b0f31b5c2f..0000000000 Binary files a/ThirdParty/RegexKitLite/._examples and /dev/null differ diff --git a/ThirdParty/RegexKitLite/examples/._NSString-HexConversion.h b/ThirdParty/RegexKitLite/examples/._NSString-HexConversion.h deleted file mode 100644 index 983016e409..0000000000 Binary files a/ThirdParty/RegexKitLite/examples/._NSString-HexConversion.h and /dev/null differ diff --git a/ThirdParty/RegexKitLite/examples/._compiledRegexCache.d b/ThirdParty/RegexKitLite/examples/._compiledRegexCache.d deleted file mode 100644 index 05589613a4..0000000000 Binary files a/ThirdParty/RegexKitLite/examples/._compiledRegexCache.d and /dev/null differ diff --git a/ThirdParty/RegexKitLite/examples/._link_example.m b/ThirdParty/RegexKitLite/examples/._link_example.m deleted file mode 100644 index 9b7340dca3..0000000000 Binary files a/ThirdParty/RegexKitLite/examples/._link_example.m and /dev/null differ diff --git a/ThirdParty/RegexKitLite/examples/._utf16ConversionCache.d b/ThirdParty/RegexKitLite/examples/._utf16ConversionCache.d deleted file mode 100644 index 1f0c2f85b8..0000000000 Binary files a/ThirdParty/RegexKitLite/examples/._utf16ConversionCache.d and /dev/null differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist index d9d509aa6d..6ee753c79b 100644 --- a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist +++ b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 19C57 + 20A5299w CFBundleDevelopmentRegion English CFBundleExecutable @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.22.0 3-gd51bd2de + 1.22.0 1346-gbb5d87c CFBundleSignature ???? CFBundleSupportedPlatforms @@ -29,17 +29,19 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 11C29 + 12A8158a + DTPlatformName + macosx DTPlatformVersion - GM + 11.0 DTSDKBuild - 19B90 + 20A5299v DTSDKName - macosx10.15 + macosx11.0 DTXcode - 1130 + 1200 DTXcodeBuild - 11C29 + 12A8158a LSBackgroundOnly 1 LSMinimumSystemVersion diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate index ecbed2f26f..a4f64611f8 100755 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate and b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop index 2002c43799..2e63530b18 100755 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop and b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib index 0db550896b..3abb9242c7 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/_CodeSignature/CodeResources b/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/_CodeSignature/CodeResources deleted file mode 100644 index ad8c2230c7..0000000000 --- a/ThirdParty/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/_CodeSignature/CodeResources +++ /dev/null @@ -1,860 +0,0 @@ - - - - - files - - Resources/AppIcon.icns - - 4McwRDEss5BzWwUMG2Xf93+ze08= - - Resources/SUStatus.nib - - +3Tn7V2+cRw0Aw2VoWT1DNAPpkE= - - Resources/ar.lproj/Sparkle.strings - - hash - - 3/ZrgZd3oO/InbR3VBYBSZ3KsDs= - - optional - - - Resources/ca.lproj/Sparkle.strings - - hash - - 8xZ59T/LZxVMOWNsGblySVsijvs= - - optional - - - Resources/cs.lproj/Sparkle.strings - - hash - - 6JE9xjhtYHPDzzXXR8Mosaib/q4= - - optional - - - Resources/da.lproj/Sparkle.strings - - hash - - OjB4Xa9yPARy+Ji2tdn3b+Ac0Fo= - - optional - - - Resources/de.lproj/Sparkle.strings - - hash - - 9TpatxKVW4B5x0nkam4LaP8YZpE= - - optional - - - Resources/el.lproj/Sparkle.strings - - hash - - RU7Vl6NphtB/j6np3vlCOV+f3hg= - - optional - - - Resources/en.lproj/Sparkle.strings - - hash - - l89zcS7iMBHT6EWrGbWHDVntC48= - - optional - - - Resources/es.lproj/Sparkle.strings - - hash - - wOQS5w7QXdkdtKNJB7rdanciR0s= - - optional - - - Resources/fi.lproj/Sparkle.strings - - hash - - yd6pIoSj19HMDIUos4Td1Fch7bs= - - optional - - - Resources/fr.lproj/Sparkle.strings - - hash - - y92HAeGH2U+nipQe3JclUrCK5xM= - - optional - - - Resources/he.lproj/Sparkle.strings - - hash - - U2WmlYGYmeeIlSW66R8awwmNXIE= - - optional - - - Resources/hr.lproj/Sparkle.strings - - hash - - cg3tRv/UshuWY4el+bbeoBZUzd4= - - optional - - - Resources/hu.lproj/Sparkle.strings - - hash - - PR7CwzbW+Lh9vVOFOSEI/fShBAM= - - optional - - - Resources/is.lproj/Sparkle.strings - - hash - - 8fxzD9ZhrvIZVZB1+QSJaPzg80M= - - optional - - - Resources/it.lproj/Sparkle.strings - - hash - - KrPl3iDKA91Kcl3LXG7nUmlQ9rY= - - optional - - - Resources/ja.lproj/Sparkle.strings - - hash - - pOqMr4NLCYTsTevlFEYuB28kdvo= - - optional - - - Resources/ko.lproj/Sparkle.strings - - hash - - ZiduO/QU0b+UIt/1uiR2Ltiq/nY= - - optional - - - Resources/nb.lproj/Sparkle.strings - - hash - - ZdW2FCEBSCiNzzblpiVbzqOQs00= - - optional - - - Resources/nl.lproj/Sparkle.strings - - hash - - 3BsDDQcMCxtwvlr07YzTG096bmU= - - optional - - - Resources/pl.lproj/Sparkle.strings - - hash - - tbKCaaSKLjvC7nDxfs/zxdO0sB0= - - optional - - - Resources/pt_BR.lproj/Sparkle.strings - - hash - - fCBMPEPsgJUYEr/n7SCU8YstLAs= - - optional - - - Resources/pt_PT.lproj/Sparkle.strings - - hash - - CzVZ2qGRE0ZQoYAFZ/C1OoqoaH8= - - optional - - - Resources/ro.lproj/Sparkle.strings - - hash - - DQSgRc2GsuXpDdBrs3wSPW5Y3As= - - optional - - - Resources/ru.lproj/Sparkle.strings - - hash - - nm1CwJSExUzZFYaiAHF7VIkGn6I= - - optional - - - Resources/sk.lproj/Sparkle.strings - - hash - - /iRGi+ly+kyot+oc/hjr0ZcBShM= - - optional - - - Resources/sl.lproj/Sparkle.strings - - hash - - sATNnW+R68nq8JWI+WTAnDhypIM= - - optional - - - Resources/sv.lproj/Sparkle.strings - - hash - - tUiNJSF7ds41OWD4IyeZogQOekk= - - optional - - - Resources/th.lproj/Sparkle.strings - - hash - - xtkemLr0M1e/ZWKgA4ENtgOFXa8= - - optional - - - Resources/tr.lproj/Sparkle.strings - - hash - - 1ZAnkcXSiedlZc0O8oX54NwZHkA= - - optional - - - Resources/uk.lproj/Sparkle.strings - - hash - - pZzpQkpsUENxNUOdVMiFdri0zX0= - - optional - - - Resources/zh_CN.lproj/Sparkle.strings - - hash - - srfTNLIFIdhNKE0yRzwEqAD7b+c= - - optional - - - Resources/zh_TW.lproj/Sparkle.strings - - hash - - xTTZRp0ziBZthxP8cgRiEgxZE0U= - - optional - - - - files2 - - MacOS/fileop - - cdhash - - nS1lLqZvMfTdUxf2t4ek+OaK+ts= - - requirement - anchor apple generic and identifier fileop and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = H7V7XYVQ7D) - - Resources/AppIcon.icns - - hash - - 4McwRDEss5BzWwUMG2Xf93+ze08= - - hash2 - - nq7j0ugQwyNbJn/7zGFwxIR0njwU3i7hAYKEyZhvUfE= - - - Resources/SUStatus.nib - - hash - - +3Tn7V2+cRw0Aw2VoWT1DNAPpkE= - - hash2 - - 5qy5Hmt7D8O4gK4CkA7/lWikR3cX9ZSe6yTyluAeOh8= - - - Resources/ar.lproj/Sparkle.strings - - hash - - 3/ZrgZd3oO/InbR3VBYBSZ3KsDs= - - hash2 - - kXl1QOUKU1bn38zZFTTTo6jSvJa3xzW+506BHFqXTrA= - - optional - - - Resources/ca.lproj/Sparkle.strings - - hash - - 8xZ59T/LZxVMOWNsGblySVsijvs= - - hash2 - - qveaz1JvR0txRBIrXESNsw7OQ/Ff/cPzhDLnsoEQraU= - - optional - - - Resources/cs.lproj/Sparkle.strings - - hash - - 6JE9xjhtYHPDzzXXR8Mosaib/q4= - - hash2 - - +egOEAm7wKsZEYpWPMyIt3O/K3rKusLoqgRPDjTbVj0= - - optional - - - Resources/da.lproj/Sparkle.strings - - hash - - OjB4Xa9yPARy+Ji2tdn3b+Ac0Fo= - - hash2 - - TNnVYVM/FH7RRT5MJDiudHhliKhwVdzKtoFHoaOyYNA= - - optional - - - Resources/de.lproj/Sparkle.strings - - hash - - 9TpatxKVW4B5x0nkam4LaP8YZpE= - - hash2 - - RWEMiKY073CexFxlxvRxZNV6sIGKW4o2w1zkbu84jTo= - - optional - - - Resources/el.lproj/Sparkle.strings - - hash - - RU7Vl6NphtB/j6np3vlCOV+f3hg= - - hash2 - - k6iM4cKwuwNERro0buUXP+cC7EfqUysLG3xtqQTYd88= - - optional - - - Resources/en.lproj/Sparkle.strings - - hash - - l89zcS7iMBHT6EWrGbWHDVntC48= - - hash2 - - NsYIQJr5hHbcZCmDpOJU7CG0gQyMCwtcCHxnVm6hX10= - - optional - - - Resources/es.lproj/Sparkle.strings - - hash - - wOQS5w7QXdkdtKNJB7rdanciR0s= - - hash2 - - Ft9c/NUFvzlK18fFR95eU9BF+WhuLxk4/mxS9Anjtgw= - - optional - - - Resources/fi.lproj/Sparkle.strings - - hash - - yd6pIoSj19HMDIUos4Td1Fch7bs= - - hash2 - - +AiiKWEdH3lesozLJBn3tfK6vi/VSI1/TnWVmIdVVsc= - - optional - - - Resources/fr.lproj/Sparkle.strings - - hash - - y92HAeGH2U+nipQe3JclUrCK5xM= - - hash2 - - iTJwrct6/Zdwlxdm5T/GC9hA4ztJ0z5vMfrd5koPIkM= - - optional - - - Resources/he.lproj/Sparkle.strings - - hash - - U2WmlYGYmeeIlSW66R8awwmNXIE= - - hash2 - - 4gUlWkwTANV/jd7n4OZoXyT8CAcgWVk/tI3a25wmuLg= - - optional - - - Resources/hr.lproj/Sparkle.strings - - hash - - cg3tRv/UshuWY4el+bbeoBZUzd4= - - hash2 - - dkl+Vn68FbdfQQMcnDHr8oXTSzW0uKtYMKZ0dTf9aC4= - - optional - - - Resources/hu.lproj/Sparkle.strings - - hash - - PR7CwzbW+Lh9vVOFOSEI/fShBAM= - - hash2 - - 03d0wnNZx2by2rcwyyUQp8ZbjVmAEQoBXA1HN25F7Hs= - - optional - - - Resources/is.lproj/Sparkle.strings - - hash - - 8fxzD9ZhrvIZVZB1+QSJaPzg80M= - - hash2 - - xcV1yh/zU3U3TsRUT6vGybvIQitf+ThrogN/uOWmD8k= - - optional - - - Resources/it.lproj/Sparkle.strings - - hash - - KrPl3iDKA91Kcl3LXG7nUmlQ9rY= - - hash2 - - SnALHmsNWW8OuPdd4u6wTLF7MpPLJhJp//vTwuGcJpY= - - optional - - - Resources/ja.lproj/Sparkle.strings - - hash - - pOqMr4NLCYTsTevlFEYuB28kdvo= - - hash2 - - jnZ+6gkcjoepDpH6/BXf4i3Txhm79rLxvJeqpPqHteE= - - optional - - - Resources/ko.lproj/Sparkle.strings - - hash - - ZiduO/QU0b+UIt/1uiR2Ltiq/nY= - - hash2 - - o5tc0FFNdGdzBM2RGpZDRFKYF7JMFNZbfPyh3Surt7c= - - optional - - - Resources/nb.lproj/Sparkle.strings - - hash - - ZdW2FCEBSCiNzzblpiVbzqOQs00= - - hash2 - - CiGpWxnyFqcL70YEaY6tZavZqd/L3I/gl/58Vf/j9ys= - - optional - - - Resources/nl.lproj/Sparkle.strings - - hash - - 3BsDDQcMCxtwvlr07YzTG096bmU= - - hash2 - - rOb3Gc/eTUZhs/QUuspB/stVPNkSU75vZKR5LNcdTek= - - optional - - - Resources/pl.lproj/Sparkle.strings - - hash - - tbKCaaSKLjvC7nDxfs/zxdO0sB0= - - hash2 - - yGt+gco6nzn7EMGrYj5QUGfy/Ax/HcMHlPi7v2gwdPk= - - optional - - - Resources/pt_BR.lproj/Sparkle.strings - - hash - - fCBMPEPsgJUYEr/n7SCU8YstLAs= - - hash2 - - vKlvCF9C0Tkpv05lzTmL8xZUeTclYhgm3mDU+0FCPLQ= - - optional - - - Resources/pt_PT.lproj/Sparkle.strings - - hash - - CzVZ2qGRE0ZQoYAFZ/C1OoqoaH8= - - hash2 - - Qedn2GikAYoVHUMFjZs4DYYZ0OLQtZKSCJTQDSb0WuE= - - optional - - - Resources/ro.lproj/Sparkle.strings - - hash - - DQSgRc2GsuXpDdBrs3wSPW5Y3As= - - hash2 - - HakhsVJkpV0iiAc2tmuQ/p107dUH70aWI4tutDGX5Ps= - - optional - - - Resources/ru.lproj/Sparkle.strings - - hash - - nm1CwJSExUzZFYaiAHF7VIkGn6I= - - hash2 - - /aioLC/IpLjhwGWWNrpmzvhFrjFcHxA6ZXtagde3rjA= - - optional - - - Resources/sk.lproj/Sparkle.strings - - hash - - /iRGi+ly+kyot+oc/hjr0ZcBShM= - - hash2 - - Dr7D2ChakP7IjzSKPULAjfQ//onLMkL0gw+yyfYjspA= - - optional - - - Resources/sl.lproj/Sparkle.strings - - hash - - sATNnW+R68nq8JWI+WTAnDhypIM= - - hash2 - - TonjJQq91roqTPcD7kBKH/xsfvhc0wl3q0XBSySAu+g= - - optional - - - Resources/sv.lproj/Sparkle.strings - - hash - - tUiNJSF7ds41OWD4IyeZogQOekk= - - hash2 - - QLVPGXWqtZ9Udh4uz+lLiX83nnDGdDM9WER9W2GBsv4= - - optional - - - Resources/th.lproj/Sparkle.strings - - hash - - xtkemLr0M1e/ZWKgA4ENtgOFXa8= - - hash2 - - fS7xcje0F0oq7sIn18SpN+cXAXCKsPBDNU/R9W3POqI= - - optional - - - Resources/tr.lproj/Sparkle.strings - - hash - - 1ZAnkcXSiedlZc0O8oX54NwZHkA= - - hash2 - - zKHIxWlHwUZ/93ji6b0kLof1QMBjmIQGE8E5urNuTZg= - - optional - - - Resources/uk.lproj/Sparkle.strings - - hash - - pZzpQkpsUENxNUOdVMiFdri0zX0= - - hash2 - - P9H3Jrk+Zyq2tenKBdBC+b9hcLg4nlIEbRlXUAN1AqA= - - optional - - - Resources/zh_CN.lproj/Sparkle.strings - - hash - - srfTNLIFIdhNKE0yRzwEqAD7b+c= - - hash2 - - BhJKIV1dEw3kjBKsXdi9ATHVkYVIbZphZW4ZuTLUXQQ= - - optional - - - Resources/zh_TW.lproj/Sparkle.strings - - hash - - xTTZRp0ziBZthxP8cgRiEgxZE0U= - - hash2 - - 2aZwBp9W8BR6Tbt6hEDjm/y/vo3FGMCIQOAsclVy+kQ= - - optional - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/Info.plist b/ThirdParty/Sparkle.framework/Versions/A/Resources/Info.plist index 8c3e130fe5..d23f4fbf9b 100644 --- a/ThirdParty/Sparkle.framework/Versions/A/Resources/Info.plist +++ b/ThirdParty/Sparkle.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 19C57 + 20A5299w CFBundleDevelopmentRegion en CFBundleExecutable @@ -17,7 +17,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.22.0 3-gd51bd2de + 1.22.0 1346-gbb5d87c CFBundleSignature ???? CFBundleSupportedPlatforms @@ -29,17 +29,19 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 11C29 + 12A8158a + DTPlatformName + macosx DTPlatformVersion - GM + 11.0 DTSDKBuild - 19B90 + 20A5299v DTSDKName - macosx10.15 + macosx11.0 DTXcode - 1130 + 1200 DTXcodeBuild - 11C29 + 12A8158a LSMinimumSystemVersion 10.7 diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/SUStatus.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/SUStatus.nib index 0db550896b..3abb9242c7 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/SUStatus.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/SUStatus.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib index ae6fc82d03..1c7e24c4a4 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib index 5b92ee10e2..199d5422b6 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib index 2b561952af..da3f88f454 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib index 5294e2e50c..f2b168f56b 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib index 6d50f65abb..3af84f4c0e 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib index fd17b58c5b..ba304b29db 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib index 8a7558750d..c96b10319f 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib index 6e0336e1f1..0a9d4338a1 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib index 1e5dd16a02..aa4b6aea1e 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib index 7d3186df59..05246043b4 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib index 993a696abd..009cfca84c 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib index a28251c791..5b530ab34a 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib index a5f23c8ca2..dd50f6927f 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib index 5c0cacac48..f5a6392552 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib index b4b0879da7..7422769d30 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib index 643cfbfae8..15a545ba44 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib index 89f7db4e7a..c51ca371a9 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib index 85a98b851f..4c165d0191 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib index 250bf1b6db..8be4d62d58 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib index 9e3ad130f7..a044334407 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib index 01a7fe6115..664bece8cc 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib index 29475743f9..1c264b8045 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib index 0eb20b9013..b7c89eafec 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib index af32dda28d..9a4b4d331b 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib index 6da162892d..a4aa5f335e 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib index 80a7ea9fe9..70774be035 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib index b34645762d..954869a773 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib index 30c68d7d70..eca1261f32 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib index 8693cbc3ac..1bf291401c 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib index 43c9939489..49d7197017 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib index 9ac3a7296c..f11140bf50 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib index fa26f7071b..788e56bf6d 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib index 5366d6cc7c..1dcdfed891 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib index e861b39fb4..1f7e9cae44 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib index 2c5015432e..31a6d7f91d 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib index d75f7f7a9e..8dfa283875 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib index 0ab5bb1434..1969700634 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib index 9f34c0f028..c388bd2c77 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib index 5d94e61a0d..e7ab16574e 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib index 49336dbeb2..1a4086e242 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib index bb7abc378c..6e9631b857 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib index 4f3b8243a0..e5f9a7a40c 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib index 3df405258e..52c26a8657 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib index 24d7c6fc47..ffd46e3625 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib index 2ddc279e46..50b20237f5 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib index 7a3d62c6c4..ffe0173728 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib index 464fe83cfc..2f22023e5d 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib index 0920a653eb..c461662965 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib index 7c64f72cb9..b51bcb8be8 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib index 72ec70976d..0fb50f8662 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib index 587d64cf9f..f75a55b4f3 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib index 130279e91b..03d02cf35a 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib index 7770c87486..368c732d8a 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib index aeeec40f7c..4b9a78665e 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib index dea751b83b..483e604eb8 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib index 1ce2a3207f..677d4439e5 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib index cbe75da371..db276278e7 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib index 818b109ff2..e8062f4219 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib index 4ac653cb18..048a017f88 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib index bb2def24c0..fe91bcad6a 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib index fabee5adaa..3a790b56fd 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib index 5cd107ed9e..81af60eb08 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib index f681d85bd5..f6fe99b0fc 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib index f2c5a6d4d9..b02746b6f4 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib index c4967d1234..ca61328767 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib index c5804f5ea3..3f135aea62 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib index 4a6e70583d..7a9c84eccf 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib index 19b6d829d2..8f8cd6c315 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib index bee77959ac..5b1f67a401 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib index 0eee80d33c..9ee8b84904 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib index 7d28633df4..e7171648c2 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib index 4c61db907c..637d9f74cb 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib index b1613c0da2..c9d89d39a1 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib index a2eb4446e7..7f5d0c2595 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib index 00c8d453ca..7c287def81 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib index 69a4e018d6..b805c1862c 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib index 9122cfadd4..38a6cad623 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib index 3506a24d81..5143c9dcb7 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib index 5612e03e1f..a614442ee5 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib index 4784b3295b..072d6d3d47 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib index cd7a8e3e4f..b017519200 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib index 1766302708..073d74be34 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib index 6d353b7ab1..db2fd5e497 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib index 3c79111abb..299d11cbd1 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib index bb39eca93c..8c1d845a03 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib index 77cd122788..6542b8b5fe 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib index f98ebb7baf..883aacfbe0 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib index d3a4ffbd1c..ff4b0c1a6e 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib index 74418e82f9..fdae5f4078 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib index fc0b8855dd..1dc6e0dc91 100644 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib and b/ThirdParty/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/Sparkle b/ThirdParty/Sparkle.framework/Versions/A/Sparkle index 4da2f61c14..de455a3e1d 100755 Binary files a/ThirdParty/Sparkle.framework/Versions/A/Sparkle and b/ThirdParty/Sparkle.framework/Versions/A/Sparkle differ diff --git a/ThirdParty/Sparkle.framework/Versions/A/_CodeSignature/CodeResources b/ThirdParty/Sparkle.framework/Versions/A/_CodeSignature/CodeResources deleted file mode 100644 index 8965edec6c..0000000000 --- a/ThirdParty/Sparkle.framework/Versions/A/_CodeSignature/CodeResources +++ /dev/null @@ -1,3900 +0,0 @@ - - - - - files - - Resources/Autoupdate.app/Contents/Info.plist - - MQtmr03pttpgkVHibMkyMwV/EIA= - - Resources/Autoupdate.app/Contents/MacOS/Autoupdate - - 6TESrbxgk691+MQP5EBm7Yub+Xo= - - Resources/Autoupdate.app/Contents/MacOS/fileop - - Mp7I6oOI7D5Yz+xZV93O1GQD6eg= - - Resources/Autoupdate.app/Contents/PkgInfo - - n57qDP4tZfLD1rCS43W0B4LQjzE= - - Resources/Autoupdate.app/Contents/Resources/AppIcon.icns - - 4McwRDEss5BzWwUMG2Xf93+ze08= - - Resources/Autoupdate.app/Contents/Resources/SUStatus.nib - - +3Tn7V2+cRw0Aw2VoWT1DNAPpkE= - - Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings - - hash - - 3/ZrgZd3oO/InbR3VBYBSZ3KsDs= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings - - hash - - 8xZ59T/LZxVMOWNsGblySVsijvs= - - optional - - - Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings - - hash - - 6JE9xjhtYHPDzzXXR8Mosaib/q4= - - optional - - - Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings - - hash - - OjB4Xa9yPARy+Ji2tdn3b+Ac0Fo= - - optional - - - Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings - - hash - - 9TpatxKVW4B5x0nkam4LaP8YZpE= - - optional - - - Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings - - hash - - RU7Vl6NphtB/j6np3vlCOV+f3hg= - - optional - - - Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings - - hash - - l89zcS7iMBHT6EWrGbWHDVntC48= - - optional - - - Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings - - hash - - wOQS5w7QXdkdtKNJB7rdanciR0s= - - optional - - - Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings - - hash - - yd6pIoSj19HMDIUos4Td1Fch7bs= - - optional - - - Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings - - hash - - y92HAeGH2U+nipQe3JclUrCK5xM= - - optional - - - Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings - - hash - - U2WmlYGYmeeIlSW66R8awwmNXIE= - - optional - - - Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings - - hash - - cg3tRv/UshuWY4el+bbeoBZUzd4= - - optional - - - Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings - - hash - - PR7CwzbW+Lh9vVOFOSEI/fShBAM= - - optional - - - Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings - - hash - - 8fxzD9ZhrvIZVZB1+QSJaPzg80M= - - optional - - - Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings - - hash - - KrPl3iDKA91Kcl3LXG7nUmlQ9rY= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings - - hash - - pOqMr4NLCYTsTevlFEYuB28kdvo= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings - - hash - - ZiduO/QU0b+UIt/1uiR2Ltiq/nY= - - optional - - - Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings - - hash - - ZdW2FCEBSCiNzzblpiVbzqOQs00= - - optional - - - Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings - - hash - - 3BsDDQcMCxtwvlr07YzTG096bmU= - - optional - - - Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings - - hash - - tbKCaaSKLjvC7nDxfs/zxdO0sB0= - - optional - - - Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings - - hash - - fCBMPEPsgJUYEr/n7SCU8YstLAs= - - optional - - - Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings - - hash - - CzVZ2qGRE0ZQoYAFZ/C1OoqoaH8= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings - - hash - - DQSgRc2GsuXpDdBrs3wSPW5Y3As= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings - - hash - - nm1CwJSExUzZFYaiAHF7VIkGn6I= - - optional - - - Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings - - hash - - /iRGi+ly+kyot+oc/hjr0ZcBShM= - - optional - - - Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings - - hash - - sATNnW+R68nq8JWI+WTAnDhypIM= - - optional - - - Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings - - hash - - tUiNJSF7ds41OWD4IyeZogQOekk= - - optional - - - Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings - - hash - - xtkemLr0M1e/ZWKgA4ENtgOFXa8= - - optional - - - Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings - - hash - - 1ZAnkcXSiedlZc0O8oX54NwZHkA= - - optional - - - Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings - - hash - - pZzpQkpsUENxNUOdVMiFdri0zX0= - - optional - - - Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings - - hash - - srfTNLIFIdhNKE0yRzwEqAD7b+c= - - optional - - - Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings - - hash - - xTTZRp0ziBZthxP8cgRiEgxZE0U= - - optional - - - Resources/Autoupdate.app/Contents/_CodeSignature/CodeResources - - 5EsW5axqPELF9e67B+zS7dwT5Ms= - - Resources/DarkAqua.css - - SCihC2/GG/DhF4xcXD9MYaxhawM= - - Resources/Info.plist - - n9N37UxiOa4SmSki4u+mZHIDJ3s= - - Resources/SUModelTranslation.plist - - iD2Ex40Usc4ZE6IAhRePqgwK/xw= - - Resources/SUStatus.nib - - +3Tn7V2+cRw0Aw2VoWT1DNAPpkE= - - Resources/ar.lproj/SUAutomaticUpdateAlert.nib - - hash - - /YSSumpGTxcnRScqxXIiMSoYgoI= - - optional - - - Resources/ar.lproj/SUUpdateAlert.nib - - hash - - rj3mNv5WCDqnrsLmtCWdWwnQzJE= - - optional - - - Resources/ar.lproj/SUUpdatePermissionPrompt.nib - - hash - - 3c992uwA/Nb/vT4SQj1vgtOLMC4= - - optional - - - Resources/ar.lproj/Sparkle.strings - - hash - - 3/ZrgZd3oO/InbR3VBYBSZ3KsDs= - - optional - - - Resources/ca.lproj/Sparkle.strings - - hash - - 8xZ59T/LZxVMOWNsGblySVsijvs= - - optional - - - Resources/cs.lproj/SUAutomaticUpdateAlert.nib - - hash - - VT80KUj/dBAWnFIzonWo1TrcMSE= - - optional - - - Resources/cs.lproj/SUUpdateAlert.nib - - hash - - reUhWQTuJfS9z/Hf8LwQASnszvc= - - optional - - - Resources/cs.lproj/SUUpdatePermissionPrompt.nib - - hash - - AvWpT2/bR/hQ2SrkSIJn1HaAXi0= - - optional - - - Resources/cs.lproj/Sparkle.strings - - hash - - 6JE9xjhtYHPDzzXXR8Mosaib/q4= - - optional - - - Resources/da.lproj/SUAutomaticUpdateAlert.nib - - hash - - u1F8d4d/aOeByXDdvXMugGpU/Fk= - - optional - - - Resources/da.lproj/SUUpdateAlert.nib - - hash - - ZW7bZ9L3EhY/tyvqZWgYznuPaTY= - - optional - - - Resources/da.lproj/SUUpdatePermissionPrompt.nib - - hash - - uMINTHGG6dgMjyUAYQha7LXmlFg= - - optional - - - Resources/da.lproj/Sparkle.strings - - hash - - OjB4Xa9yPARy+Ji2tdn3b+Ac0Fo= - - optional - - - Resources/de.lproj/SUAutomaticUpdateAlert.nib - - hash - - VRG/ZYuz0KOyMjBw4bu4NIlO3MY= - - optional - - - Resources/de.lproj/SUUpdateAlert.nib - - hash - - cT+nRuofaW12I0wjvG697gXwMfA= - - optional - - - Resources/de.lproj/SUUpdatePermissionPrompt.nib - - hash - - P1qisftBIKKBMlb5+8fD2vZn8C4= - - optional - - - Resources/de.lproj/Sparkle.strings - - hash - - 9TpatxKVW4B5x0nkam4LaP8YZpE= - - optional - - - Resources/el.lproj/SUAutomaticUpdateAlert.nib - - hash - - ccB0As39qPJ0x4XkN34YZI8IUHs= - - optional - - - Resources/el.lproj/SUUpdateAlert.nib - - hash - - 8BqXnIfQOb3RBiybY1uUgI2a0oc= - - optional - - - Resources/el.lproj/SUUpdatePermissionPrompt.nib - - hash - - WujzpfOdW+H1RXGYDSAWcHDghE4= - - optional - - - Resources/el.lproj/Sparkle.strings - - hash - - RU7Vl6NphtB/j6np3vlCOV+f3hg= - - optional - - - Resources/en.lproj/SUAutomaticUpdateAlert.nib - - hash - - smFdnjqh5FfLp75QJkkVpDg+CPs= - - optional - - - Resources/en.lproj/SUUpdateAlert.nib - - hash - - uQPgA8QNrJ6dkBofaA4cYiep7Nw= - - optional - - - Resources/en.lproj/SUUpdatePermissionPrompt.nib - - hash - - jc/+PgCV2twCZZQSjQHHAer/o9M= - - optional - - - Resources/en.lproj/Sparkle.strings - - hash - - l89zcS7iMBHT6EWrGbWHDVntC48= - - optional - - - Resources/es.lproj/SUAutomaticUpdateAlert.nib - - hash - - t79VYhRMP0dQCdKKtn83sAtFAkU= - - optional - - - Resources/es.lproj/SUUpdateAlert.nib - - hash - - BPV01tBvjSwDHnD/WkxFJ+W7eFI= - - optional - - - Resources/es.lproj/SUUpdatePermissionPrompt.nib - - hash - - NrVNwqMfVUN8CR/qLP3WzI74QKg= - - optional - - - Resources/es.lproj/Sparkle.strings - - hash - - wOQS5w7QXdkdtKNJB7rdanciR0s= - - optional - - - Resources/fi.lproj/SUAutomaticUpdateAlert.nib - - hash - - 3Jy7fCDJXPgxfGrSLnrq/BrR8Fo= - - optional - - - Resources/fi.lproj/SUUpdateAlert.nib - - hash - - fWlU1Y804x2510X3QDdE/kgfBjY= - - optional - - - Resources/fi.lproj/SUUpdatePermissionPrompt.nib - - hash - - phFF3/dcygmnknefGj4i3cgz294= - - optional - - - Resources/fi.lproj/Sparkle.strings - - hash - - yd6pIoSj19HMDIUos4Td1Fch7bs= - - optional - - - Resources/fr.lproj/SUAutomaticUpdateAlert.nib - - hash - - RuJWtV4NU5tNgg+IHFiksMNUfIA= - - optional - - - Resources/fr.lproj/SUUpdateAlert.nib - - hash - - Fx5MmhvVqSx8rSHFOIibPCl3xBs= - - optional - - - Resources/fr.lproj/SUUpdatePermissionPrompt.nib - - hash - - ZwgBvgFW99rtuKNAPLcCPieEdM8= - - optional - - - Resources/fr.lproj/Sparkle.strings - - hash - - y92HAeGH2U+nipQe3JclUrCK5xM= - - optional - - - Resources/he.lproj/Sparkle.strings - - hash - - U2WmlYGYmeeIlSW66R8awwmNXIE= - - optional - - - Resources/hr.lproj/SUAutomaticUpdateAlert.nib - - hash - - 3rBSNPdcL/Nl7+0rpUZqGhljLQY= - - optional - - - Resources/hr.lproj/SUUpdateAlert.nib - - hash - - +OYMTGeQfzz+9ImWkCbDKJG4N6w= - - optional - - - Resources/hr.lproj/SUUpdatePermissionPrompt.nib - - hash - - eWFDPqngmPB+nrvPXjpU207PI9w= - - optional - - - Resources/hr.lproj/Sparkle.strings - - hash - - cg3tRv/UshuWY4el+bbeoBZUzd4= - - optional - - - Resources/hu.lproj/SUAutomaticUpdateAlert.nib - - hash - - KqZCmcd+fhq4qCb7DbEOVkCcC5M= - - optional - - - Resources/hu.lproj/SUUpdateAlert.nib - - hash - - VjGGKPTkcvGmYWc2ejOXIOR2Pec= - - optional - - - Resources/hu.lproj/SUUpdatePermissionPrompt.nib - - hash - - 5EiQOlMoRKSojP+6FNbyMwNhgVk= - - optional - - - Resources/hu.lproj/Sparkle.strings - - hash - - PR7CwzbW+Lh9vVOFOSEI/fShBAM= - - optional - - - Resources/is.lproj/SUAutomaticUpdateAlert.nib - - hash - - 9sWoun8uUn4FOGmFh/cRqO5mWzE= - - optional - - - Resources/is.lproj/SUUpdateAlert.nib - - hash - - HC1ZY4ZwpdC8g7whfpr8B68+Wsg= - - optional - - - Resources/is.lproj/SUUpdatePermissionPrompt.nib - - hash - - EAyyhF1LF30CQ1Xy4rKPTe/xRnw= - - optional - - - Resources/is.lproj/Sparkle.strings - - hash - - 8fxzD9ZhrvIZVZB1+QSJaPzg80M= - - optional - - - Resources/it.lproj/SUAutomaticUpdateAlert.nib - - hash - - d2A1nB5hRiKyEG+WlqkG6tOLN4o= - - optional - - - Resources/it.lproj/SUUpdateAlert.nib - - hash - - C+frin/RV6PMceoJWhnBHw/UiSo= - - optional - - - Resources/it.lproj/SUUpdatePermissionPrompt.nib - - hash - - vf/tCm60RCR/C2i/1i32oXsAcjE= - - optional - - - Resources/it.lproj/Sparkle.strings - - hash - - KrPl3iDKA91Kcl3LXG7nUmlQ9rY= - - optional - - - Resources/ja.lproj/SUAutomaticUpdateAlert.nib - - hash - - aWYGX6gp0OWKXuqzFnGN2elPdq8= - - optional - - - Resources/ja.lproj/SUUpdateAlert.nib - - hash - - 9BdUZW0WakHcHXxdTW+qH8oFFCE= - - optional - - - Resources/ja.lproj/SUUpdatePermissionPrompt.nib - - hash - - Wznr+EPvPITkPTGJ7W1Zh7S3mjg= - - optional - - - Resources/ja.lproj/Sparkle.strings - - hash - - pOqMr4NLCYTsTevlFEYuB28kdvo= - - optional - - - Resources/ko.lproj/SUAutomaticUpdateAlert.nib - - hash - - l0zDEsFdyHwzPuayHe8R2wkbv0c= - - optional - - - Resources/ko.lproj/SUUpdateAlert.nib - - hash - - R9RsJCIJrFMpzTJNUsMio/R2jNs= - - optional - - - Resources/ko.lproj/SUUpdatePermissionPrompt.nib - - hash - - LZRIqcdnRPBux+ah3MJ9xfNHp88= - - optional - - - Resources/ko.lproj/Sparkle.strings - - hash - - ZiduO/QU0b+UIt/1uiR2Ltiq/nY= - - optional - - - Resources/nb.lproj/SUAutomaticUpdateAlert.nib - - hash - - SPO3bat8hlLlfLJaUf2G52JCnj4= - - optional - - - Resources/nb.lproj/SUUpdateAlert.nib - - hash - - Kcse19bpeWkKxkDiEabgvpb2Dk8= - - optional - - - Resources/nb.lproj/SUUpdatePermissionPrompt.nib - - hash - - GyKZGbl4GtCEcluITYa9hpcIP5Y= - - optional - - - Resources/nb.lproj/Sparkle.strings - - hash - - ZdW2FCEBSCiNzzblpiVbzqOQs00= - - optional - - - Resources/nl.lproj/SUAutomaticUpdateAlert.nib - - hash - - qPEKfzngfw7MTBC9zDuFeV2mxrM= - - optional - - - Resources/nl.lproj/SUUpdateAlert.nib - - hash - - mk176kIJR7A90H6Qq+hi8D2Q6Vo= - - optional - - - Resources/nl.lproj/SUUpdatePermissionPrompt.nib - - hash - - pX9iSMdoghZoabZQf6weYorpRMU= - - optional - - - Resources/nl.lproj/Sparkle.strings - - hash - - 3BsDDQcMCxtwvlr07YzTG096bmU= - - optional - - - Resources/pl.lproj/SUAutomaticUpdateAlert.nib - - hash - - yO9mbkk9w+uraDeMYQCyD9Pcixs= - - optional - - - Resources/pl.lproj/SUUpdateAlert.nib - - hash - - QSgvMCGfu3qwt4LSPDoITv7Zj30= - - optional - - - Resources/pl.lproj/SUUpdatePermissionPrompt.nib - - hash - - YHOo4ZJGt91vfnPYtx4GLpbVGT8= - - optional - - - Resources/pl.lproj/Sparkle.strings - - hash - - tbKCaaSKLjvC7nDxfs/zxdO0sB0= - - optional - - - Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib - - hash - - inaxbGmn9HWqpPGI7oTUP3fT4bI= - - optional - - - Resources/pt_BR.lproj/SUUpdateAlert.nib - - hash - - QTPQmiz8PidQnhJGgST9L6ru3YA= - - optional - - - Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib - - hash - - CMIxlBSU3mdKMUhid11e0PKU+uI= - - optional - - - Resources/pt_BR.lproj/Sparkle.strings - - hash - - fCBMPEPsgJUYEr/n7SCU8YstLAs= - - optional - - - Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib - - hash - - mwgoNyiy5sAWZQvhA0pQP/Vveac= - - optional - - - Resources/pt_PT.lproj/SUUpdateAlert.nib - - hash - - 7VloEUr/e0D0uiCgmSYM89car10= - - optional - - - Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib - - hash - - AFi3dVr4KYs5G5IKjsixwpSVIc4= - - optional - - - Resources/pt_PT.lproj/Sparkle.strings - - hash - - CzVZ2qGRE0ZQoYAFZ/C1OoqoaH8= - - optional - - - Resources/ro.lproj/SUAutomaticUpdateAlert.nib - - hash - - LtQ2eZQYug7NgfOLic3fmVJAFbw= - - optional - - - Resources/ro.lproj/SUUpdateAlert.nib - - hash - - 68qUvif5bsy3gh88hEcrGvT0sg8= - - optional - - - Resources/ro.lproj/SUUpdatePermissionPrompt.nib - - hash - - uFAifKY/u4QHWE7o+5z/w5x1gII= - - optional - - - Resources/ro.lproj/Sparkle.strings - - hash - - DQSgRc2GsuXpDdBrs3wSPW5Y3As= - - optional - - - Resources/ru.lproj/SUAutomaticUpdateAlert.nib - - hash - - iCRc0jY1yNzkmqt11chCmFjTw8E= - - optional - - - Resources/ru.lproj/SUUpdateAlert.nib - - hash - - Shn/KmVDoD3wypQA4uFjnIJqQzY= - - optional - - - Resources/ru.lproj/SUUpdatePermissionPrompt.nib - - hash - - FM/I7DUdrVjjK3gQ5lGxr1WeFs0= - - optional - - - Resources/ru.lproj/Sparkle.strings - - hash - - nm1CwJSExUzZFYaiAHF7VIkGn6I= - - optional - - - Resources/sk.lproj/SUAutomaticUpdateAlert.nib - - hash - - rIj3cspcOqGb0/jsVNUknyhdZLs= - - optional - - - Resources/sk.lproj/SUUpdateAlert.nib - - hash - - ZYpm1VcCFFWBaIzjYYwhekhYPDE= - - optional - - - Resources/sk.lproj/SUUpdatePermissionPrompt.nib - - hash - - 36hCn4nJvYIC/ChKYIbrkLfR/e4= - - optional - - - Resources/sk.lproj/Sparkle.strings - - hash - - /iRGi+ly+kyot+oc/hjr0ZcBShM= - - optional - - - Resources/sl.lproj/SUAutomaticUpdateAlert.nib - - hash - - KxmOLAEJy3dHs3LR4igXFOYNFxQ= - - optional - - - Resources/sl.lproj/SUUpdateAlert.nib - - hash - - qRwnTGgz/ZS11VE0PbfWNnLPg0o= - - optional - - - Resources/sl.lproj/SUUpdatePermissionPrompt.nib - - hash - - KwCrIB5ZC0pjp/LGdGSoxef9PTQ= - - optional - - - Resources/sl.lproj/Sparkle.strings - - hash - - sATNnW+R68nq8JWI+WTAnDhypIM= - - optional - - - Resources/sv.lproj/SUAutomaticUpdateAlert.nib - - hash - - PbhK3uEZxdDFz/xvau90WKo+kHc= - - optional - - - Resources/sv.lproj/SUUpdateAlert.nib - - hash - - nhRSdsw8i1SblxHBOLBvYjBPO8g= - - optional - - - Resources/sv.lproj/SUUpdatePermissionPrompt.nib - - hash - - Szm84wOok/HGK/RqpyGSaE/wfYs= - - optional - - - Resources/sv.lproj/Sparkle.strings - - hash - - tUiNJSF7ds41OWD4IyeZogQOekk= - - optional - - - Resources/th.lproj/SUAutomaticUpdateAlert.nib - - hash - - sbDfVbpmVlt4hzxPotVfMYLB790= - - optional - - - Resources/th.lproj/SUUpdateAlert.nib - - hash - - j2iSaoDJRMV3kq+UFuzkbVAojSg= - - optional - - - Resources/th.lproj/SUUpdatePermissionPrompt.nib - - hash - - pafwk0QyI8LDGkNFFqnGs6QpWy4= - - optional - - - Resources/th.lproj/Sparkle.strings - - hash - - xtkemLr0M1e/ZWKgA4ENtgOFXa8= - - optional - - - Resources/tr.lproj/SUAutomaticUpdateAlert.nib - - hash - - W69yjACyzQsBgIoRUCUSWdrny5U= - - optional - - - Resources/tr.lproj/SUUpdateAlert.nib - - hash - - w4Qf7do1kg75nGVgX0TP8MHOCOs= - - optional - - - Resources/tr.lproj/SUUpdatePermissionPrompt.nib - - hash - - mBs8KyggjtpeqjogQ4yVbElqCgY= - - optional - - - Resources/tr.lproj/Sparkle.strings - - hash - - 1ZAnkcXSiedlZc0O8oX54NwZHkA= - - optional - - - Resources/uk.lproj/SUAutomaticUpdateAlert.nib - - hash - - o0Gc3WKXpCEMvUQAKdZePCIUbrw= - - optional - - - Resources/uk.lproj/SUUpdateAlert.nib - - hash - - 5P3DitlPL1sqOb0WkiXq8ZWq2kQ= - - optional - - - Resources/uk.lproj/SUUpdatePermissionPrompt.nib - - hash - - LwJuMcD+17cc2N950raSqWObUOo= - - optional - - - Resources/uk.lproj/Sparkle.strings - - hash - - pZzpQkpsUENxNUOdVMiFdri0zX0= - - optional - - - Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib - - hash - - tNSuKpfWVmC21R2Mi70PBdjIJoc= - - optional - - - Resources/zh_CN.lproj/SUUpdateAlert.nib - - hash - - dQk9OZiBuGL0rOXiWivc2ld9Z+4= - - optional - - - Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib - - hash - - +ehNhPb0yMniYGORYvkQVfvn/d8= - - optional - - - Resources/zh_CN.lproj/Sparkle.strings - - hash - - srfTNLIFIdhNKE0yRzwEqAD7b+c= - - optional - - - Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib - - hash - - Q2BwxailzaO5y0cheQGau4sntQA= - - optional - - - Resources/zh_TW.lproj/SUUpdateAlert.nib - - hash - - bm6w3bCQbsrYbFszNCANq+DHcdQ= - - optional - - - Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib - - hash - - vUN8qoLuS2FJhaa/1ioBAQVWJ7M= - - optional - - - Resources/zh_TW.lproj/Sparkle.strings - - hash - - xTTZRp0ziBZthxP8cgRiEgxZE0U= - - optional - - - - files2 - - Headers/SPUDownloadData.h - - hash - - 0uirAEMDYuzqSh3dbtfncvlTpvo= - - hash2 - - DkOXqPnwmXR6QeDI4ja3DtFxDW5L3Dcjf21hEPWImoY= - - - Headers/SPUDownloader.h - - hash - - OAA6tKxz1g4V1SQZaj3RPNmNMzo= - - hash2 - - OEDz5kY4WgtWuZ8SApjyqvVDEf3iEj7Sg2uhl+3J+jk= - - - Headers/SPUDownloaderDelegate.h - - hash - - UkBvHxzNYA/YON0ImE8m/8g4vkg= - - hash2 - - 8D6RyR2aziRQIiRN3e7qxlEM9jfgkwBBTWmSjDhLqm8= - - - Headers/SPUDownloaderDeprecated.h - - hash - - l7/+P82TkgRp/YLnQtJtjMWd3/A= - - hash2 - - A7PBMhwuTH0X/JDeyLlh1Xrdc0krwjPqdBPCiePFrxQ= - - - Headers/SPUDownloaderProtocol.h - - hash - - VsD58zsMmnH4mVuK456ekiJcYFU= - - hash2 - - 02oqvyfRCQp5SMSBQNzYZaz1/0VTso0GKnOSbuDEAVo= - - - Headers/SPUDownloaderSession.h - - hash - - IeDSEpUGRwB9HcDVlqbxb6k19A8= - - hash2 - - ZFXLQz90P2h4rR2v1VqRAKzrSSlItkO5cW/0AFy7eYQ= - - - Headers/SPUURLRequest.h - - hash - - 588/W6GUNXYFVar9nygqHNYeTX8= - - hash2 - - 4EG4qYbJgM0wBJCoSPD1lbbDTLHlm85m4xNehyXyU74= - - - Headers/SUAppcast.h - - hash - - puyTMIscPdgGWGQM4TITePIKSdA= - - hash2 - - R3/VQvZCv8Ab34CC17vtBHR3dqkJXnidTR5n8aX4DD0= - - - Headers/SUAppcastItem.h - - hash - - YQvyEYAn6UWDwU8NT5ccPwhdRXE= - - hash2 - - ZB27X0FfNZ54ez8FZAFDEi6/o4BYtQnl4A9Y3tAbkUI= - - - Headers/SUCodeSigningVerifier.h - - hash - - Wj90pgADRte0DhyUmlOXWORp830= - - hash2 - - PPwqqlfaR8hxIfD2YEKdVzyDN4kBVdul55HDAELxQ7U= - - - Headers/SUErrors.h - - hash - - fXyYJmeBH5lNthmGD2GJOWkMmjg= - - hash2 - - JKSoOJCqip87NB39v1ip2Gki8x1rGVcXB7D6kTCeBTI= - - - Headers/SUExport.h - - hash - - G2w3uU/V7JzIupuOjQ2LyPVGdo4= - - hash2 - - XO8CQmbFThLbYg949NEGhg3g+iouIw3/3+BCCLtEdFE= - - - Headers/SUStandardVersionComparator.h - - hash - - 6L4GrA8i1OjMLIGc/sFvEUeSfso= - - hash2 - - 5HrjOlX+uJHOw1ma+1BtG5tlYx/75N/gVzt+BX/GOxg= - - - Headers/SUUpdater.h - - hash - - krK593R1jTMhVN/yl8nXWo1WIfg= - - hash2 - - IJc5cjKEoEbG6onu/Dy+1OXT5YJ7GV3R1U0u2FamUsY= - - - Headers/SUUpdaterDelegate.h - - hash - - UWIKKrtpG8ETIKMCaSRiq4ujPJs= - - hash2 - - d9LBmTLBxcQda+JzY5Y0rdqUU3ZwG0B/xUrAF68d2Xk= - - - Headers/SUVersionComparisonProtocol.h - - hash - - pin8CrEV9eYWF9sdDu0N1YixWOE= - - hash2 - - rsm3T+GsIhDgSqY8EtkBpIxYgSZCZxf4HE9a/FcTRCc= - - - Headers/SUVersionDisplayProtocol.h - - hash - - D3yVFnts0j1IacN9dSN7iZSVlZg= - - hash2 - - AQITUMp8aq1UAOrmksAKmGFpgI24u9rDSBBZrgDqdN4= - - - Headers/Sparkle.h - - hash - - kAc+dA9KctczULg0aLWypDdBvy0= - - hash2 - - qx9pH2muu7OaSYEeZEfIzGFTWCk/gIo7ZQ+6TExPhyA= - - - Modules/module.modulemap - - hash - - /2jgDcgH5+EG9ojcVskajfVo4yg= - - hash2 - - 1TF+JZkzFr6n8oH4WItto+C5Vf3K12f0H9KjqD0A5QU= - - - PrivateHeaders/SUUnarchiver.h - - hash - - 7mTpmnTkJ97DZQQzK/hdl2aZmXU= - - hash2 - - SQYAanTtlyX15CJapj5tDbhBEMtgQ7ZNdmpSij0+tD4= - - - Resources/Autoupdate.app/Contents/Info.plist - - hash - - MQtmr03pttpgkVHibMkyMwV/EIA= - - hash2 - - F5vCDh1M9qNcT3n9r1rkZC99TBaKmZ3WMGSqzOYvS+Y= - - - Resources/Autoupdate.app/Contents/MacOS/Autoupdate - - hash - - 6TESrbxgk691+MQP5EBm7Yub+Xo= - - hash2 - - fktGR1d4HNrgzp5x+BDpbLas2x7wTtoOTJCUEu3UOiU= - - - Resources/Autoupdate.app/Contents/MacOS/fileop - - hash - - Mp7I6oOI7D5Yz+xZV93O1GQD6eg= - - hash2 - - wI50nPCI2DBw1YQi7VG7cKAQoAK83j96Ag4utyw0F0A= - - - Resources/Autoupdate.app/Contents/PkgInfo - - hash - - n57qDP4tZfLD1rCS43W0B4LQjzE= - - hash2 - - glAhkclISwTWhTdPmHmgBmBpxJuKyuegSwHTjQfo7KA= - - - Resources/Autoupdate.app/Contents/Resources/AppIcon.icns - - hash - - 4McwRDEss5BzWwUMG2Xf93+ze08= - - hash2 - - nq7j0ugQwyNbJn/7zGFwxIR0njwU3i7hAYKEyZhvUfE= - - - Resources/Autoupdate.app/Contents/Resources/SUStatus.nib - - hash - - +3Tn7V2+cRw0Aw2VoWT1DNAPpkE= - - hash2 - - 5qy5Hmt7D8O4gK4CkA7/lWikR3cX9ZSe6yTyluAeOh8= - - - Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings - - hash - - 3/ZrgZd3oO/InbR3VBYBSZ3KsDs= - - hash2 - - kXl1QOUKU1bn38zZFTTTo6jSvJa3xzW+506BHFqXTrA= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings - - hash - - 8xZ59T/LZxVMOWNsGblySVsijvs= - - hash2 - - qveaz1JvR0txRBIrXESNsw7OQ/Ff/cPzhDLnsoEQraU= - - optional - - - Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings - - hash - - 6JE9xjhtYHPDzzXXR8Mosaib/q4= - - hash2 - - +egOEAm7wKsZEYpWPMyIt3O/K3rKusLoqgRPDjTbVj0= - - optional - - - Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings - - hash - - OjB4Xa9yPARy+Ji2tdn3b+Ac0Fo= - - hash2 - - TNnVYVM/FH7RRT5MJDiudHhliKhwVdzKtoFHoaOyYNA= - - optional - - - Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings - - hash - - 9TpatxKVW4B5x0nkam4LaP8YZpE= - - hash2 - - RWEMiKY073CexFxlxvRxZNV6sIGKW4o2w1zkbu84jTo= - - optional - - - Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings - - hash - - RU7Vl6NphtB/j6np3vlCOV+f3hg= - - hash2 - - k6iM4cKwuwNERro0buUXP+cC7EfqUysLG3xtqQTYd88= - - optional - - - Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings - - hash - - l89zcS7iMBHT6EWrGbWHDVntC48= - - hash2 - - NsYIQJr5hHbcZCmDpOJU7CG0gQyMCwtcCHxnVm6hX10= - - optional - - - Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings - - hash - - wOQS5w7QXdkdtKNJB7rdanciR0s= - - hash2 - - Ft9c/NUFvzlK18fFR95eU9BF+WhuLxk4/mxS9Anjtgw= - - optional - - - Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings - - hash - - yd6pIoSj19HMDIUos4Td1Fch7bs= - - hash2 - - +AiiKWEdH3lesozLJBn3tfK6vi/VSI1/TnWVmIdVVsc= - - optional - - - Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings - - hash - - y92HAeGH2U+nipQe3JclUrCK5xM= - - hash2 - - iTJwrct6/Zdwlxdm5T/GC9hA4ztJ0z5vMfrd5koPIkM= - - optional - - - Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings - - hash - - U2WmlYGYmeeIlSW66R8awwmNXIE= - - hash2 - - 4gUlWkwTANV/jd7n4OZoXyT8CAcgWVk/tI3a25wmuLg= - - optional - - - Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings - - hash - - cg3tRv/UshuWY4el+bbeoBZUzd4= - - hash2 - - dkl+Vn68FbdfQQMcnDHr8oXTSzW0uKtYMKZ0dTf9aC4= - - optional - - - Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings - - hash - - PR7CwzbW+Lh9vVOFOSEI/fShBAM= - - hash2 - - 03d0wnNZx2by2rcwyyUQp8ZbjVmAEQoBXA1HN25F7Hs= - - optional - - - Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings - - hash - - 8fxzD9ZhrvIZVZB1+QSJaPzg80M= - - hash2 - - xcV1yh/zU3U3TsRUT6vGybvIQitf+ThrogN/uOWmD8k= - - optional - - - Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings - - hash - - KrPl3iDKA91Kcl3LXG7nUmlQ9rY= - - hash2 - - SnALHmsNWW8OuPdd4u6wTLF7MpPLJhJp//vTwuGcJpY= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings - - hash - - pOqMr4NLCYTsTevlFEYuB28kdvo= - - hash2 - - jnZ+6gkcjoepDpH6/BXf4i3Txhm79rLxvJeqpPqHteE= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings - - hash - - ZiduO/QU0b+UIt/1uiR2Ltiq/nY= - - hash2 - - o5tc0FFNdGdzBM2RGpZDRFKYF7JMFNZbfPyh3Surt7c= - - optional - - - Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings - - hash - - ZdW2FCEBSCiNzzblpiVbzqOQs00= - - hash2 - - CiGpWxnyFqcL70YEaY6tZavZqd/L3I/gl/58Vf/j9ys= - - optional - - - Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings - - hash - - 3BsDDQcMCxtwvlr07YzTG096bmU= - - hash2 - - rOb3Gc/eTUZhs/QUuspB/stVPNkSU75vZKR5LNcdTek= - - optional - - - Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings - - hash - - tbKCaaSKLjvC7nDxfs/zxdO0sB0= - - hash2 - - yGt+gco6nzn7EMGrYj5QUGfy/Ax/HcMHlPi7v2gwdPk= - - optional - - - Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings - - hash - - fCBMPEPsgJUYEr/n7SCU8YstLAs= - - hash2 - - vKlvCF9C0Tkpv05lzTmL8xZUeTclYhgm3mDU+0FCPLQ= - - optional - - - Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings - - hash - - CzVZ2qGRE0ZQoYAFZ/C1OoqoaH8= - - hash2 - - Qedn2GikAYoVHUMFjZs4DYYZ0OLQtZKSCJTQDSb0WuE= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings - - hash - - DQSgRc2GsuXpDdBrs3wSPW5Y3As= - - hash2 - - HakhsVJkpV0iiAc2tmuQ/p107dUH70aWI4tutDGX5Ps= - - optional - - - Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings - - hash - - nm1CwJSExUzZFYaiAHF7VIkGn6I= - - hash2 - - /aioLC/IpLjhwGWWNrpmzvhFrjFcHxA6ZXtagde3rjA= - - optional - - - Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings - - hash - - /iRGi+ly+kyot+oc/hjr0ZcBShM= - - hash2 - - Dr7D2ChakP7IjzSKPULAjfQ//onLMkL0gw+yyfYjspA= - - optional - - - Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings - - hash - - sATNnW+R68nq8JWI+WTAnDhypIM= - - hash2 - - TonjJQq91roqTPcD7kBKH/xsfvhc0wl3q0XBSySAu+g= - - optional - - - Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings - - hash - - tUiNJSF7ds41OWD4IyeZogQOekk= - - hash2 - - QLVPGXWqtZ9Udh4uz+lLiX83nnDGdDM9WER9W2GBsv4= - - optional - - - Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings - - hash - - xtkemLr0M1e/ZWKgA4ENtgOFXa8= - - hash2 - - fS7xcje0F0oq7sIn18SpN+cXAXCKsPBDNU/R9W3POqI= - - optional - - - Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings - - hash - - 1ZAnkcXSiedlZc0O8oX54NwZHkA= - - hash2 - - zKHIxWlHwUZ/93ji6b0kLof1QMBjmIQGE8E5urNuTZg= - - optional - - - Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings - - hash - - pZzpQkpsUENxNUOdVMiFdri0zX0= - - hash2 - - P9H3Jrk+Zyq2tenKBdBC+b9hcLg4nlIEbRlXUAN1AqA= - - optional - - - Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings - - hash - - srfTNLIFIdhNKE0yRzwEqAD7b+c= - - hash2 - - BhJKIV1dEw3kjBKsXdi9ATHVkYVIbZphZW4ZuTLUXQQ= - - optional - - - Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings - - hash - - xTTZRp0ziBZthxP8cgRiEgxZE0U= - - hash2 - - 2aZwBp9W8BR6Tbt6hEDjm/y/vo3FGMCIQOAsclVy+kQ= - - optional - - - Resources/Autoupdate.app/Contents/_CodeSignature/CodeResources - - hash - - 5EsW5axqPELF9e67B+zS7dwT5Ms= - - hash2 - - oiSMr4ddD3ocR0yZy2dvOfkE0GruvoR4YX+ei/16C/U= - - - Resources/DarkAqua.css - - hash - - SCihC2/GG/DhF4xcXD9MYaxhawM= - - hash2 - - 1G4+GJId47E8UijYTy9xeqA8RpLdOaGZQZ8B85ydROg= - - - Resources/Info.plist - - hash - - n9N37UxiOa4SmSki4u+mZHIDJ3s= - - hash2 - - fbyrcHQEu9/AD3c+SlXoYeVvarNU8wrE+llod/X9FNo= - - - Resources/SUModelTranslation.plist - - hash - - iD2Ex40Usc4ZE6IAhRePqgwK/xw= - - hash2 - - bxnpRQhROJXTL2xuIeffR3p+hOuuji7eOoDeNqSYqTg= - - - Resources/SUStatus.nib - - hash - - +3Tn7V2+cRw0Aw2VoWT1DNAPpkE= - - hash2 - - 5qy5Hmt7D8O4gK4CkA7/lWikR3cX9ZSe6yTyluAeOh8= - - - Resources/ar.lproj/SUAutomaticUpdateAlert.nib - - hash - - /YSSumpGTxcnRScqxXIiMSoYgoI= - - hash2 - - +TtZ6QBIxdcV1v2b43e1eifibiBX3zUY5m3vAwfBmz0= - - optional - - - Resources/ar.lproj/SUUpdateAlert.nib - - hash - - rj3mNv5WCDqnrsLmtCWdWwnQzJE= - - hash2 - - 2vErcEF1YAaT6SZXgz6raIMCUQYxXdMB3QkILHlni6k= - - optional - - - Resources/ar.lproj/SUUpdatePermissionPrompt.nib - - hash - - 3c992uwA/Nb/vT4SQj1vgtOLMC4= - - hash2 - - ejTyEeUDsvLABAYDa18+d8IRrt4qpRFHT8mhaR154+w= - - optional - - - Resources/ar.lproj/Sparkle.strings - - hash - - 3/ZrgZd3oO/InbR3VBYBSZ3KsDs= - - hash2 - - kXl1QOUKU1bn38zZFTTTo6jSvJa3xzW+506BHFqXTrA= - - optional - - - Resources/ca.lproj/Sparkle.strings - - hash - - 8xZ59T/LZxVMOWNsGblySVsijvs= - - hash2 - - qveaz1JvR0txRBIrXESNsw7OQ/Ff/cPzhDLnsoEQraU= - - optional - - - Resources/cs.lproj/SUAutomaticUpdateAlert.nib - - hash - - VT80KUj/dBAWnFIzonWo1TrcMSE= - - hash2 - - 8AfrgHg2n8Bd0Zqdsy2R8FbiawG8vKU9ZgbOM4A6LeY= - - optional - - - Resources/cs.lproj/SUUpdateAlert.nib - - hash - - reUhWQTuJfS9z/Hf8LwQASnszvc= - - hash2 - - HUwSYNKaqdTpVIblAHt8y56HJM5ZGo94XVl+0j9Qpfs= - - optional - - - Resources/cs.lproj/SUUpdatePermissionPrompt.nib - - hash - - AvWpT2/bR/hQ2SrkSIJn1HaAXi0= - - hash2 - - DigL8qo0eo3Dcd1Pjnb2SN7WfCYMB466pjCyjM/N+u0= - - optional - - - Resources/cs.lproj/Sparkle.strings - - hash - - 6JE9xjhtYHPDzzXXR8Mosaib/q4= - - hash2 - - +egOEAm7wKsZEYpWPMyIt3O/K3rKusLoqgRPDjTbVj0= - - optional - - - Resources/da.lproj/SUAutomaticUpdateAlert.nib - - hash - - u1F8d4d/aOeByXDdvXMugGpU/Fk= - - hash2 - - brs9IleYaJnps9htzlB1pQR3SzgDBlHi8EzhO+dGBHE= - - optional - - - Resources/da.lproj/SUUpdateAlert.nib - - hash - - ZW7bZ9L3EhY/tyvqZWgYznuPaTY= - - hash2 - - SDIBQ7s3g5y2vcBJ6P79ig3kkYSGLORFSwVXhMP09xc= - - optional - - - Resources/da.lproj/SUUpdatePermissionPrompt.nib - - hash - - uMINTHGG6dgMjyUAYQha7LXmlFg= - - hash2 - - SSiMHMhYqbVuTek2hXbaVXclcxyQLxC4wQ7GKW7Hs3k= - - optional - - - Resources/da.lproj/Sparkle.strings - - hash - - OjB4Xa9yPARy+Ji2tdn3b+Ac0Fo= - - hash2 - - TNnVYVM/FH7RRT5MJDiudHhliKhwVdzKtoFHoaOyYNA= - - optional - - - Resources/de.lproj/SUAutomaticUpdateAlert.nib - - hash - - VRG/ZYuz0KOyMjBw4bu4NIlO3MY= - - hash2 - - pBFk2uov3ctfdeBe1zZCawQpB8Wc4uRFVFly419/710= - - optional - - - Resources/de.lproj/SUUpdateAlert.nib - - hash - - cT+nRuofaW12I0wjvG697gXwMfA= - - hash2 - - OX6zOOf44FBTL/dEMERt3B5/nGvLa8BfaLT3+5PocVk= - - optional - - - Resources/de.lproj/SUUpdatePermissionPrompt.nib - - hash - - P1qisftBIKKBMlb5+8fD2vZn8C4= - - hash2 - - MROTTYkU1LpXor4Z0t/PYQmJbNapMi1hN3PqN3qTm7I= - - optional - - - Resources/de.lproj/Sparkle.strings - - hash - - 9TpatxKVW4B5x0nkam4LaP8YZpE= - - hash2 - - RWEMiKY073CexFxlxvRxZNV6sIGKW4o2w1zkbu84jTo= - - optional - - - Resources/el.lproj/SUAutomaticUpdateAlert.nib - - hash - - ccB0As39qPJ0x4XkN34YZI8IUHs= - - hash2 - - cG40LBFmRabj9NvgWnkU1ktlhXXqYwQD/qBRmOplaE0= - - optional - - - Resources/el.lproj/SUUpdateAlert.nib - - hash - - 8BqXnIfQOb3RBiybY1uUgI2a0oc= - - hash2 - - lHU9xUOsSTjNngzu5IT7RYOa0xkhZPFHMdRdYTgUOJU= - - optional - - - Resources/el.lproj/SUUpdatePermissionPrompt.nib - - hash - - WujzpfOdW+H1RXGYDSAWcHDghE4= - - hash2 - - 8sKAhoOk1Fg59L9B1ivTMLhtDsfk/jOPoHQLdNEiiwk= - - optional - - - Resources/el.lproj/Sparkle.strings - - hash - - RU7Vl6NphtB/j6np3vlCOV+f3hg= - - hash2 - - k6iM4cKwuwNERro0buUXP+cC7EfqUysLG3xtqQTYd88= - - optional - - - Resources/en.lproj/SUAutomaticUpdateAlert.nib - - hash - - smFdnjqh5FfLp75QJkkVpDg+CPs= - - hash2 - - e6c/DVRcIt7/HDR6s6fclGtvSgpv8tHSEETWVffaFTA= - - optional - - - Resources/en.lproj/SUUpdateAlert.nib - - hash - - uQPgA8QNrJ6dkBofaA4cYiep7Nw= - - hash2 - - barcVEzpJLLj7IF2fqx8fLfYaKNig4ysWENyX9ecMSk= - - optional - - - Resources/en.lproj/SUUpdatePermissionPrompt.nib - - hash - - jc/+PgCV2twCZZQSjQHHAer/o9M= - - hash2 - - GHDASo65+rZmj9G3godOHzOaBA+plsqF/Q+gh9/xVPQ= - - optional - - - Resources/en.lproj/Sparkle.strings - - hash - - l89zcS7iMBHT6EWrGbWHDVntC48= - - hash2 - - NsYIQJr5hHbcZCmDpOJU7CG0gQyMCwtcCHxnVm6hX10= - - optional - - - Resources/es.lproj/SUAutomaticUpdateAlert.nib - - hash - - t79VYhRMP0dQCdKKtn83sAtFAkU= - - hash2 - - /ekWm2QPndpW/HYcv0rdJxLkqjRkGoDMoILTYBpUEWk= - - optional - - - Resources/es.lproj/SUUpdateAlert.nib - - hash - - BPV01tBvjSwDHnD/WkxFJ+W7eFI= - - hash2 - - HgGgfZG0CcxhaB8YAZyY7fXR7NmPa2QrJ3HJAtq0NhI= - - optional - - - Resources/es.lproj/SUUpdatePermissionPrompt.nib - - hash - - NrVNwqMfVUN8CR/qLP3WzI74QKg= - - hash2 - - EIPFVayBB7EGZiWM0iCyDJlAtLFcTa5YJ9oS5SQIoBM= - - optional - - - Resources/es.lproj/Sparkle.strings - - hash - - wOQS5w7QXdkdtKNJB7rdanciR0s= - - hash2 - - Ft9c/NUFvzlK18fFR95eU9BF+WhuLxk4/mxS9Anjtgw= - - optional - - - Resources/fi.lproj/SUAutomaticUpdateAlert.nib - - hash - - 3Jy7fCDJXPgxfGrSLnrq/BrR8Fo= - - hash2 - - roOmNaY4r8XeA/0LuIvxyfyG0dbL9R8qin7RVs3KbOU= - - optional - - - Resources/fi.lproj/SUUpdateAlert.nib - - hash - - fWlU1Y804x2510X3QDdE/kgfBjY= - - hash2 - - XHd3Zg700vX7/XedyFMLwFCeM8dTStXSd9D7s5qQl3Y= - - optional - - - Resources/fi.lproj/SUUpdatePermissionPrompt.nib - - hash - - phFF3/dcygmnknefGj4i3cgz294= - - hash2 - - IKx5AqlulXQOTJCPJWcWfXHip04AcQb/tu/b8qgLmDM= - - optional - - - Resources/fi.lproj/Sparkle.strings - - hash - - yd6pIoSj19HMDIUos4Td1Fch7bs= - - hash2 - - +AiiKWEdH3lesozLJBn3tfK6vi/VSI1/TnWVmIdVVsc= - - optional - - - Resources/fr.lproj/SUAutomaticUpdateAlert.nib - - hash - - RuJWtV4NU5tNgg+IHFiksMNUfIA= - - hash2 - - zY+dWgnrRmrv5j1zVDFX0TRh8F7uDUIO7JNZASTNiLY= - - optional - - - Resources/fr.lproj/SUUpdateAlert.nib - - hash - - Fx5MmhvVqSx8rSHFOIibPCl3xBs= - - hash2 - - CAUJN9Nut+E/KiLnEKvskkGnl3GzIgL7SaK4wkCAaNs= - - optional - - - Resources/fr.lproj/SUUpdatePermissionPrompt.nib - - hash - - ZwgBvgFW99rtuKNAPLcCPieEdM8= - - hash2 - - 2jQtALwqUDzChWK+/BdSxUffDRRnqjw6maR2HjHeouk= - - optional - - - Resources/fr.lproj/Sparkle.strings - - hash - - y92HAeGH2U+nipQe3JclUrCK5xM= - - hash2 - - iTJwrct6/Zdwlxdm5T/GC9hA4ztJ0z5vMfrd5koPIkM= - - optional - - - Resources/fr_CA.lproj - - symlink - fr.lproj - - Resources/he.lproj/Sparkle.strings - - hash - - U2WmlYGYmeeIlSW66R8awwmNXIE= - - hash2 - - 4gUlWkwTANV/jd7n4OZoXyT8CAcgWVk/tI3a25wmuLg= - - optional - - - Resources/hr.lproj/SUAutomaticUpdateAlert.nib - - hash - - 3rBSNPdcL/Nl7+0rpUZqGhljLQY= - - hash2 - - O9VtLe/h827vQxnbkRD4puhEtK/BHASbao9oBqKkln0= - - optional - - - Resources/hr.lproj/SUUpdateAlert.nib - - hash - - +OYMTGeQfzz+9ImWkCbDKJG4N6w= - - hash2 - - Dkj72VU5xRyMciYhJaXanrauMtbMEiE9xDd/RsEKtao= - - optional - - - Resources/hr.lproj/SUUpdatePermissionPrompt.nib - - hash - - eWFDPqngmPB+nrvPXjpU207PI9w= - - hash2 - - vHYoiJA75oqy6uH3P2vblP9/RSwVaKDIO6kIlzx4g/M= - - optional - - - Resources/hr.lproj/Sparkle.strings - - hash - - cg3tRv/UshuWY4el+bbeoBZUzd4= - - hash2 - - dkl+Vn68FbdfQQMcnDHr8oXTSzW0uKtYMKZ0dTf9aC4= - - optional - - - Resources/hu.lproj/SUAutomaticUpdateAlert.nib - - hash - - KqZCmcd+fhq4qCb7DbEOVkCcC5M= - - hash2 - - u6rYN30G+CjP88+9L3cf4IevFhrHkKalaX+R0Job43o= - - optional - - - Resources/hu.lproj/SUUpdateAlert.nib - - hash - - VjGGKPTkcvGmYWc2ejOXIOR2Pec= - - hash2 - - f++tXz3pkLWUBCHeqRoQyUFy1e8wbz2nK0Amh00bag0= - - optional - - - Resources/hu.lproj/SUUpdatePermissionPrompt.nib - - hash - - 5EiQOlMoRKSojP+6FNbyMwNhgVk= - - hash2 - - ry1VDAek0QDeYVURAQ4/zvNwMxxl0K3Ke6cJgWCFvNY= - - optional - - - Resources/hu.lproj/Sparkle.strings - - hash - - PR7CwzbW+Lh9vVOFOSEI/fShBAM= - - hash2 - - 03d0wnNZx2by2rcwyyUQp8ZbjVmAEQoBXA1HN25F7Hs= - - optional - - - Resources/is.lproj/SUAutomaticUpdateAlert.nib - - hash - - 9sWoun8uUn4FOGmFh/cRqO5mWzE= - - hash2 - - hNUsyU5uPxPrDvVj6t4r6HH3XRECIRe8LJullcxcVAI= - - optional - - - Resources/is.lproj/SUUpdateAlert.nib - - hash - - HC1ZY4ZwpdC8g7whfpr8B68+Wsg= - - hash2 - - DTba0O8vZoZc3qpArrUqtl/IOWetvAix+U2lOlvSOyE= - - optional - - - Resources/is.lproj/SUUpdatePermissionPrompt.nib - - hash - - EAyyhF1LF30CQ1Xy4rKPTe/xRnw= - - hash2 - - GNEB16LN7opdExub4jVIV7GxG+Xjye1t5Oi/LuLjDtA= - - optional - - - Resources/is.lproj/Sparkle.strings - - hash - - 8fxzD9ZhrvIZVZB1+QSJaPzg80M= - - hash2 - - xcV1yh/zU3U3TsRUT6vGybvIQitf+ThrogN/uOWmD8k= - - optional - - - Resources/it.lproj/SUAutomaticUpdateAlert.nib - - hash - - d2A1nB5hRiKyEG+WlqkG6tOLN4o= - - hash2 - - ESlh8qALOP1DqbgPInojoKQUvGSkdAtWVPVHUbGNrPU= - - optional - - - Resources/it.lproj/SUUpdateAlert.nib - - hash - - C+frin/RV6PMceoJWhnBHw/UiSo= - - hash2 - - wIkClqPQf4IXnoNjs+HkDal17JIkVt2EHOlGgYO/H/w= - - optional - - - Resources/it.lproj/SUUpdatePermissionPrompt.nib - - hash - - vf/tCm60RCR/C2i/1i32oXsAcjE= - - hash2 - - hiEMzQpjDXRNSu/NVobOmzj8s8byYNGF1IrKog2HH/Q= - - optional - - - Resources/it.lproj/Sparkle.strings - - hash - - KrPl3iDKA91Kcl3LXG7nUmlQ9rY= - - hash2 - - SnALHmsNWW8OuPdd4u6wTLF7MpPLJhJp//vTwuGcJpY= - - optional - - - Resources/ja.lproj/SUAutomaticUpdateAlert.nib - - hash - - aWYGX6gp0OWKXuqzFnGN2elPdq8= - - hash2 - - AR2XBkK+o0AWJsrxtOQaDqZt2USjlOcsBQ3PvMaU04Y= - - optional - - - Resources/ja.lproj/SUUpdateAlert.nib - - hash - - 9BdUZW0WakHcHXxdTW+qH8oFFCE= - - hash2 - - 7/unmhJKVa+i3extQaNvhP8Psds4rme8XDuEDLdrTF0= - - optional - - - Resources/ja.lproj/SUUpdatePermissionPrompt.nib - - hash - - Wznr+EPvPITkPTGJ7W1Zh7S3mjg= - - hash2 - - 897ACSGAkQlOgxnIUKEBB5oZ5HVDq+LsaUZyMK552SI= - - optional - - - Resources/ja.lproj/Sparkle.strings - - hash - - pOqMr4NLCYTsTevlFEYuB28kdvo= - - hash2 - - jnZ+6gkcjoepDpH6/BXf4i3Txhm79rLxvJeqpPqHteE= - - optional - - - Resources/ko.lproj/SUAutomaticUpdateAlert.nib - - hash - - l0zDEsFdyHwzPuayHe8R2wkbv0c= - - hash2 - - vQKakhmXQaXzDmNZ3obfuFn64bN4WryGbv4PhhFQHwg= - - optional - - - Resources/ko.lproj/SUUpdateAlert.nib - - hash - - R9RsJCIJrFMpzTJNUsMio/R2jNs= - - hash2 - - GXyd600apB2bkqxvoE1TGtXaubIgM5Ax/FVnutaFaDM= - - optional - - - Resources/ko.lproj/SUUpdatePermissionPrompt.nib - - hash - - LZRIqcdnRPBux+ah3MJ9xfNHp88= - - hash2 - - 28oA8XEAiPXoCjG8ILeCwt5+S6gcRcoPwFBvS4En9qI= - - optional - - - Resources/ko.lproj/Sparkle.strings - - hash - - ZiduO/QU0b+UIt/1uiR2Ltiq/nY= - - hash2 - - o5tc0FFNdGdzBM2RGpZDRFKYF7JMFNZbfPyh3Surt7c= - - optional - - - Resources/nb.lproj/SUAutomaticUpdateAlert.nib - - hash - - SPO3bat8hlLlfLJaUf2G52JCnj4= - - hash2 - - +CFyEJ59wv63vFlN1sPdHXFL1l+pnDnFN4YlOARJ8X8= - - optional - - - Resources/nb.lproj/SUUpdateAlert.nib - - hash - - Kcse19bpeWkKxkDiEabgvpb2Dk8= - - hash2 - - p8QGRW/hKOb2t9wFm6JsGGmu5w5UdmjVs4fiCui5KZA= - - optional - - - Resources/nb.lproj/SUUpdatePermissionPrompt.nib - - hash - - GyKZGbl4GtCEcluITYa9hpcIP5Y= - - hash2 - - 9qiQFWjQ1q4TdLHMycqAj/eDAmkCSCo/UG8SX8Zkh2c= - - optional - - - Resources/nb.lproj/Sparkle.strings - - hash - - ZdW2FCEBSCiNzzblpiVbzqOQs00= - - hash2 - - CiGpWxnyFqcL70YEaY6tZavZqd/L3I/gl/58Vf/j9ys= - - optional - - - Resources/nl.lproj/SUAutomaticUpdateAlert.nib - - hash - - qPEKfzngfw7MTBC9zDuFeV2mxrM= - - hash2 - - fZCmlUmO3v4NuhM8CyndplPoXNMfcIlddrCK8kbD0Zw= - - optional - - - Resources/nl.lproj/SUUpdateAlert.nib - - hash - - mk176kIJR7A90H6Qq+hi8D2Q6Vo= - - hash2 - - pU7sKL/A7sGeR2YEaEIeUGlJVwknXecQJwROC5+SOuQ= - - optional - - - Resources/nl.lproj/SUUpdatePermissionPrompt.nib - - hash - - pX9iSMdoghZoabZQf6weYorpRMU= - - hash2 - - 3rQhmJI/gj8wacR3DwqpREcaEjGLttElIKkshCJ+yH8= - - optional - - - Resources/nl.lproj/Sparkle.strings - - hash - - 3BsDDQcMCxtwvlr07YzTG096bmU= - - hash2 - - rOb3Gc/eTUZhs/QUuspB/stVPNkSU75vZKR5LNcdTek= - - optional - - - Resources/pl.lproj/SUAutomaticUpdateAlert.nib - - hash - - yO9mbkk9w+uraDeMYQCyD9Pcixs= - - hash2 - - LxNu6nj6FEzTuhkXU5mwGVrkUNjADug5soUK9zrLktU= - - optional - - - Resources/pl.lproj/SUUpdateAlert.nib - - hash - - QSgvMCGfu3qwt4LSPDoITv7Zj30= - - hash2 - - MYMDphfT1GFsLte5/xEl+sPWNm1UZ/WHfkSku7xucAQ= - - optional - - - Resources/pl.lproj/SUUpdatePermissionPrompt.nib - - hash - - YHOo4ZJGt91vfnPYtx4GLpbVGT8= - - hash2 - - jGrScR6F0S44GvtOuKY3y6B+hyv+lG8Sv77LDe3aRB8= - - optional - - - Resources/pl.lproj/Sparkle.strings - - hash - - tbKCaaSKLjvC7nDxfs/zxdO0sB0= - - hash2 - - yGt+gco6nzn7EMGrYj5QUGfy/Ax/HcMHlPi7v2gwdPk= - - optional - - - Resources/pt.lproj - - symlink - pt_BR.lproj - - Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib - - hash - - inaxbGmn9HWqpPGI7oTUP3fT4bI= - - hash2 - - 4Fe7AH7mcRvmvWOuvCHQTIDps55F+5k0z/mb8wQCD3s= - - optional - - - Resources/pt_BR.lproj/SUUpdateAlert.nib - - hash - - QTPQmiz8PidQnhJGgST9L6ru3YA= - - hash2 - - aQwM6/DmxTU7ThG6fdFzE4KjDfTd93dzaeiBIk9RJ/k= - - optional - - - Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib - - hash - - CMIxlBSU3mdKMUhid11e0PKU+uI= - - hash2 - - gNvCyzqugXUh4Ulop6fZ9uotGZY9qUP9ctewAt2N1pw= - - optional - - - Resources/pt_BR.lproj/Sparkle.strings - - hash - - fCBMPEPsgJUYEr/n7SCU8YstLAs= - - hash2 - - vKlvCF9C0Tkpv05lzTmL8xZUeTclYhgm3mDU+0FCPLQ= - - optional - - - Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib - - hash - - mwgoNyiy5sAWZQvhA0pQP/Vveac= - - hash2 - - VA4GLtmR/IX8d8Iz4UHmhlc6dxU0SKrxrnAdvpD/BMw= - - optional - - - Resources/pt_PT.lproj/SUUpdateAlert.nib - - hash - - 7VloEUr/e0D0uiCgmSYM89car10= - - hash2 - - rAGAuAtK5sQllVDRJhBK7Ad9lDQiCIAq52juKTIIR0g= - - optional - - - Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib - - hash - - AFi3dVr4KYs5G5IKjsixwpSVIc4= - - hash2 - - 5ti8kCx3jHLRKsCRDHJOv8YloT1Yy1IbD+Hbo9GMAUo= - - optional - - - Resources/pt_PT.lproj/Sparkle.strings - - hash - - CzVZ2qGRE0ZQoYAFZ/C1OoqoaH8= - - hash2 - - Qedn2GikAYoVHUMFjZs4DYYZ0OLQtZKSCJTQDSb0WuE= - - optional - - - Resources/ro.lproj/SUAutomaticUpdateAlert.nib - - hash - - LtQ2eZQYug7NgfOLic3fmVJAFbw= - - hash2 - - w7VawADWi34XjI0jnOVz5zBGBADSgtKGMYU8Hz+KUtI= - - optional - - - Resources/ro.lproj/SUUpdateAlert.nib - - hash - - 68qUvif5bsy3gh88hEcrGvT0sg8= - - hash2 - - BJcZCaOTTIniVHe6UVhTM64qvlF1YJjpbVMjcR49RnE= - - optional - - - Resources/ro.lproj/SUUpdatePermissionPrompt.nib - - hash - - uFAifKY/u4QHWE7o+5z/w5x1gII= - - hash2 - - TBLieQEHh1EhIQ4vm4bfRUc323faptYorHbphYN5itk= - - optional - - - Resources/ro.lproj/Sparkle.strings - - hash - - DQSgRc2GsuXpDdBrs3wSPW5Y3As= - - hash2 - - HakhsVJkpV0iiAc2tmuQ/p107dUH70aWI4tutDGX5Ps= - - optional - - - Resources/ru.lproj/SUAutomaticUpdateAlert.nib - - hash - - iCRc0jY1yNzkmqt11chCmFjTw8E= - - hash2 - - S94yfdcJElKVpSmbkb9KTqnmKMblTutyBhE6n+pAIfo= - - optional - - - Resources/ru.lproj/SUUpdateAlert.nib - - hash - - Shn/KmVDoD3wypQA4uFjnIJqQzY= - - hash2 - - Vxdy+ff5uN+MXH+NI2M6HpJdJvwpXqhAEtGx2mO0eUU= - - optional - - - Resources/ru.lproj/SUUpdatePermissionPrompt.nib - - hash - - FM/I7DUdrVjjK3gQ5lGxr1WeFs0= - - hash2 - - FkOUrVT3O0e1S/xALQLCymT6qXHVLs8SFwuvd2s+AVg= - - optional - - - Resources/ru.lproj/Sparkle.strings - - hash - - nm1CwJSExUzZFYaiAHF7VIkGn6I= - - hash2 - - /aioLC/IpLjhwGWWNrpmzvhFrjFcHxA6ZXtagde3rjA= - - optional - - - Resources/sk.lproj/SUAutomaticUpdateAlert.nib - - hash - - rIj3cspcOqGb0/jsVNUknyhdZLs= - - hash2 - - tDRtDHlxX3iDzMUWt2IeRfRLcPxopXnwLpAZ/EV+eoU= - - optional - - - Resources/sk.lproj/SUUpdateAlert.nib - - hash - - ZYpm1VcCFFWBaIzjYYwhekhYPDE= - - hash2 - - 6cfM72jyl2AyPw5m9Th9KetQkc4sfI9UbLDBu6cTLfs= - - optional - - - Resources/sk.lproj/SUUpdatePermissionPrompt.nib - - hash - - 36hCn4nJvYIC/ChKYIbrkLfR/e4= - - hash2 - - nopSwlbJLcZISmXmxqEqUNCf0wNVR3n2BzZHtTgdW14= - - optional - - - Resources/sk.lproj/Sparkle.strings - - hash - - /iRGi+ly+kyot+oc/hjr0ZcBShM= - - hash2 - - Dr7D2ChakP7IjzSKPULAjfQ//onLMkL0gw+yyfYjspA= - - optional - - - Resources/sl.lproj/SUAutomaticUpdateAlert.nib - - hash - - KxmOLAEJy3dHs3LR4igXFOYNFxQ= - - hash2 - - UoQxj1DtvkthiB+91+WllbsxCXNIaV3wAOc74n3I1+o= - - optional - - - Resources/sl.lproj/SUUpdateAlert.nib - - hash - - qRwnTGgz/ZS11VE0PbfWNnLPg0o= - - hash2 - - UY1iVEmOI8TR2drCQMvPEnzmLwf4PFrjsZAbsRIhqWY= - - optional - - - Resources/sl.lproj/SUUpdatePermissionPrompt.nib - - hash - - KwCrIB5ZC0pjp/LGdGSoxef9PTQ= - - hash2 - - hMbdGOoNGfB9UVPcQXAXgrAjmTf2rSbYyI/Jaw5BwwE= - - optional - - - Resources/sl.lproj/Sparkle.strings - - hash - - sATNnW+R68nq8JWI+WTAnDhypIM= - - hash2 - - TonjJQq91roqTPcD7kBKH/xsfvhc0wl3q0XBSySAu+g= - - optional - - - Resources/sv.lproj/SUAutomaticUpdateAlert.nib - - hash - - PbhK3uEZxdDFz/xvau90WKo+kHc= - - hash2 - - Xhv+J/8lm9Lb6zHhhAKx1zN5PxeZpD5M4cjFRygeO+U= - - optional - - - Resources/sv.lproj/SUUpdateAlert.nib - - hash - - nhRSdsw8i1SblxHBOLBvYjBPO8g= - - hash2 - - 3xO38LcvSzV2aayRGeqxuwRpeAHtVtbW97n30hTtHJg= - - optional - - - Resources/sv.lproj/SUUpdatePermissionPrompt.nib - - hash - - Szm84wOok/HGK/RqpyGSaE/wfYs= - - hash2 - - HWrpxWPfJQJLieGeK3bYQKNfGG+Sqiw3W5Sf0s7vmf0= - - optional - - - Resources/sv.lproj/Sparkle.strings - - hash - - tUiNJSF7ds41OWD4IyeZogQOekk= - - hash2 - - QLVPGXWqtZ9Udh4uz+lLiX83nnDGdDM9WER9W2GBsv4= - - optional - - - Resources/th.lproj/SUAutomaticUpdateAlert.nib - - hash - - sbDfVbpmVlt4hzxPotVfMYLB790= - - hash2 - - Srfz0TQS3pw7W5hSpNLWoAphXX4tGS/JLc0agI3eBgc= - - optional - - - Resources/th.lproj/SUUpdateAlert.nib - - hash - - j2iSaoDJRMV3kq+UFuzkbVAojSg= - - hash2 - - a+GnhfwduPlBKDaFP4pbkqIWkjh5Z3zrRFnk5+z3N5I= - - optional - - - Resources/th.lproj/SUUpdatePermissionPrompt.nib - - hash - - pafwk0QyI8LDGkNFFqnGs6QpWy4= - - hash2 - - 3Uu0ZCWTdPl2V2Bok2x3+dx/jtt4FvoLAJK4IdZ5NAA= - - optional - - - Resources/th.lproj/Sparkle.strings - - hash - - xtkemLr0M1e/ZWKgA4ENtgOFXa8= - - hash2 - - fS7xcje0F0oq7sIn18SpN+cXAXCKsPBDNU/R9W3POqI= - - optional - - - Resources/tr.lproj/SUAutomaticUpdateAlert.nib - - hash - - W69yjACyzQsBgIoRUCUSWdrny5U= - - hash2 - - H3Mm9Zt2esbP/vNCOFtX9fX4mbOXSo3S5XuMVqeBBKw= - - optional - - - Resources/tr.lproj/SUUpdateAlert.nib - - hash - - w4Qf7do1kg75nGVgX0TP8MHOCOs= - - hash2 - - Xc85Ymsn5+Gfq4XBPGT7FXZaNCnkcbdnsYhjrdf8fw8= - - optional - - - Resources/tr.lproj/SUUpdatePermissionPrompt.nib - - hash - - mBs8KyggjtpeqjogQ4yVbElqCgY= - - hash2 - - r4oxLLAWLG0+u7eBH8a53zQpO0cBzZIZ+0SPNVsl05I= - - optional - - - Resources/tr.lproj/Sparkle.strings - - hash - - 1ZAnkcXSiedlZc0O8oX54NwZHkA= - - hash2 - - zKHIxWlHwUZ/93ji6b0kLof1QMBjmIQGE8E5urNuTZg= - - optional - - - Resources/uk.lproj/SUAutomaticUpdateAlert.nib - - hash - - o0Gc3WKXpCEMvUQAKdZePCIUbrw= - - hash2 - - dTdxrsc21G9TB4NkNQxNzMYU4sBcjK80cC/Yl4iP2IA= - - optional - - - Resources/uk.lproj/SUUpdateAlert.nib - - hash - - 5P3DitlPL1sqOb0WkiXq8ZWq2kQ= - - hash2 - - 5RfdwO9tONR0Be13RKAI93KHTfHTkwP3UVE3Pmgvrwg= - - optional - - - Resources/uk.lproj/SUUpdatePermissionPrompt.nib - - hash - - LwJuMcD+17cc2N950raSqWObUOo= - - hash2 - - 4eeRoJOBs3iRCYt5n3xo7ZjWIFRyX2R/xi34qdXb7Q0= - - optional - - - Resources/uk.lproj/Sparkle.strings - - hash - - pZzpQkpsUENxNUOdVMiFdri0zX0= - - hash2 - - P9H3Jrk+Zyq2tenKBdBC+b9hcLg4nlIEbRlXUAN1AqA= - - optional - - - Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib - - hash - - tNSuKpfWVmC21R2Mi70PBdjIJoc= - - hash2 - - jdy3U9kAa7ekW7HVEFXCTUad+YilsNm87B4mjbhPtCo= - - optional - - - Resources/zh_CN.lproj/SUUpdateAlert.nib - - hash - - dQk9OZiBuGL0rOXiWivc2ld9Z+4= - - hash2 - - +GlPCq3h0uvVX3/pbHT70nCYcCTBUU4P09xZeodkbUc= - - optional - - - Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib - - hash - - +ehNhPb0yMniYGORYvkQVfvn/d8= - - hash2 - - 2ZB7pYpYulW3JPiqAUrOkq/3JCJZHgbTrQR8/TUSx5c= - - optional - - - Resources/zh_CN.lproj/Sparkle.strings - - hash - - srfTNLIFIdhNKE0yRzwEqAD7b+c= - - hash2 - - BhJKIV1dEw3kjBKsXdi9ATHVkYVIbZphZW4ZuTLUXQQ= - - optional - - - Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib - - hash - - Q2BwxailzaO5y0cheQGau4sntQA= - - hash2 - - Z05sKu5rLxDPACbVK9AxaFbogZUSBOBb/GfqIqoQEk4= - - optional - - - Resources/zh_TW.lproj/SUUpdateAlert.nib - - hash - - bm6w3bCQbsrYbFszNCANq+DHcdQ= - - hash2 - - TQgKt3xRvEsmHbRLgWIJxg/xYVEnmDxUc7favyLd/10= - - optional - - - Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib - - hash - - vUN8qoLuS2FJhaa/1ioBAQVWJ7M= - - hash2 - - UVPcuvi0/ImxNZm+JdNkvdoex55ypgX9zSDqS1dsDOU= - - optional - - - Resources/zh_TW.lproj/Sparkle.strings - - hash - - xTTZRp0ziBZthxP8cgRiEgxZE0U= - - hash2 - - 2aZwBp9W8BR6Tbt6hEDjm/y/vo3FGMCIQOAsclVy+kQ= - - optional - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/ThirdParty/libsixel/config.h b/ThirdParty/libsixel/config.h new file mode 100644 index 0000000000..5ec67c6fa4 --- /dev/null +++ b/ThirdParty/libsixel/config.h @@ -0,0 +1,377 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#define HAVE_ASSERT_H 1 + +/* define 1 if GCC supports -Bsymbolic */ +#define HAVE_BSYMBOLIC 1 + +/* Define to 1 if you have the `calloc' function. */ +#define HAVE_CALLOC 1 + +/* Define to 1 if you have the `clearerr' function. */ +#define HAVE_CLEARERR 1 + +/* Define to 1 if you have the `clock' function. */ +#define HAVE_CLOCK 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_CTYPE_H 1 + +/* enable debugging support */ +/* #undef HAVE_DEBUG */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromBmpPtr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMBMPPTR */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromGd2Ptr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMGD2PTR */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromGifPtr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMGIFPTR */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromJpegPtr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMJPEGPTR */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromJpegPtrEx', + and to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMJPEGPTREX */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromPngPtr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMPNGPTR */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromTgaPtr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMTGAPTR */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromTiffPtr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMTIFFPTR */ + +/* Define to 1 if you have the declaration of `gdImageCreateFromWBMPPtr', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGECREATEFROMWBMPPTR */ + +/* Define to 1 if you have the declaration of `gdImagePaletteToTrueColor', and + to 0 if you don't. */ +/* #undef HAVE_DECL_GDIMAGEPALETTETOTRUECOLOR */ + +/* Define to 1 if you have the declaration of + `png_set_expand_gray_1_2_4_to_8', and to 0 if you don't. */ +/* #undef HAVE_DECL_PNG_SET_EXPAND_GRAY_1_2_4_TO_8 */ + +/* Define to 1 if you have the declaration of `png_set_gray_1_2_4_to_8', and + to 0 if you don't. */ +/* #undef HAVE_DECL_PNG_SET_GRAY_1_2_4_TO_8 */ + +/* Define to 1 if you have the declaration of `SIGHUP', and to 0 if you don't. + */ +#define HAVE_DECL_SIGHUP 1 + +/* Define to 1 if you have the declaration of `SIGINT', and to 0 if you don't. + */ +#define HAVE_DECL_SIGINT 1 + +/* Define to 1 if you have the declaration of `SIGTERM', and to 0 if you + don't. */ +#define HAVE_DECL_SIGTERM 1 + +/* define 1 if GCC supports -Wclobbered */ +/* #undef HAVE_DIAGNOSTIC_CLOBBERED */ + +/* define 1 if GCC supports -Wdeprecated-declarations */ +#define HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS 1 + +/* define 1 if GCC supports -Wdouble-promotion */ +#define HAVE_DIAGNOSTIC_DOUBLE_PROMOTION 1 + +/* define 1 if GCC supports -Wshadow */ +#define HAVE_DIAGNOSTIC_SHADOW 1 + +/* define 1 if GCC supports -Wsign-conversion */ +#define HAVE_DIAGNOSTIC_SIGN_CONVERSION 1 + +/* define 1 if GCC supports -Wstrict-overeflow=1 */ +#define HAVE_DIAGNOSTIC_STRICT_OVERFLOW 1 + +/* define 1 if GCC supports -Wswitch-default */ +#define HAVE_DIAGNOSTIC_SWITCH_DEFAULT 1 + +/* define 1 if GCC supports -Wtypedef-redefinition */ +#define HAVE_DIAGNOSTIC_TYPEDEF_REDEFINITION 1 + +/* define 1 if GCC supports -Wuninitialized */ +#define HAVE_DIAGNOSTIC_UNINITIALIZED 1 + +/* define 1 if GCC supports -Wunused-but-set-variable */ +/* #undef HAVE_DIAGNOSTIC_UNUSED_BUT_SET_VARIABLE */ + +/* define 1 if GCC supports -Wunused-function */ +#define HAVE_DIAGNOSTIC_UNUSED_FUNCTION 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `floor' function. */ +#define HAVE_FLOOR 1 + +/* Define to 1 if the system has the `deprecated' function attribute */ +#define HAVE_FUNC_ATTRIBUTE_DEPRECATED 1 + +/* whether gd is available */ +/* #undef HAVE_GD */ + +/* whether gdk-pixbuf2 is available */ +/* #undef HAVE_GDK_PIXBUF2 */ + +/* whether getopt is avilable */ +/* #undef HAVE_GETOPT */ + +/* Define to 1 if you have the header file. */ +#define HAVE_GETOPT_H 1 + +/* whether getopt_long is avilable */ +#define HAVE_GETOPT_LONG 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_IO_H */ + +/* Define to 1 if you have the `isatty' function. */ +#define HAVE_ISATTY 1 + +/* whether jpeg codec library is available */ +/* #undef HAVE_JPEG */ + +/* Define to 1 if you have the `ldiv' function. */ +#define HAVE_LDIV 1 + +/* whether libcurl is available */ +// #define HAVE_LIBCURL 1 + +/* Define to 1 if you have the `iconv' library (-liconv). */ +/* #undef HAVE_LIBICONV */ + +/* Define to 1 if you have the `m' library (-lm). */ +#define HAVE_LIBM 1 + +/* whether libpng is available */ +/* #undef HAVE_LIBPNG */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the `longjmp' function. */ +#define HAVE_LONGJMP 1 + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MATH_H 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `nanosleep' function. */ +#define HAVE_NANOSLEEP 1 + +/* Define to 1 if you have the `pow' function. */ +#define HAVE_POW 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC 1 + +/* Define to 1 if you have the `select' function. */ +#define HAVE_SELECT 1 + +/* Define to 1 if you have the `setjmp' function. */ +#define HAVE_SETJMP 1 + +/* Define to 1 if you have the `setmode' function. */ +#define HAVE_SETMODE 1 + +/* Define to 1 if you have the `signal' function. */ +#define HAVE_SIGNAL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define to 1 if you have the `sqrt' function. */ +#define HAVE_SQRT 1 + +/* Define to 1 if you have the `stat' function. */ +#define HAVE_STAT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncmp' function. */ +#define HAVE_STRNCMP 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SELECT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SIGNAL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_UNISTD_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* enable tests */ +/* #undef HAVE_TESTS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if the system has the `deprecated' variable attribute */ +#define HAVE_VAR_ATTRIBUTE_DEPRECATED 1 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +/* Define to 1 if you have the `_setmode' function. */ +/* #undef HAVE__SETMODE */ + +/* Define to 1 if the system has the `__builtin_unreachable' built-in function + */ +#define HAVE___BUILTIN_UNREACHABLE 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "sixel" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "saitoha@me.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "sixel" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "sixel 1.8.6" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "sixel" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.8.6" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "1.8.6" + +/* Define for Solaris 2.5.1 so the uint32_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +/* #undef _UINT32_T */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the type of a signed integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int16_t */ + +/* Define to the type of a signed integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int32_t */ + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to the type of an unsigned integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint16_t */ + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint32_t */ diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-allocator.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-allocator.Plo new file mode 100644 index 0000000000..8ab55c8c84 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-allocator.Plo @@ -0,0 +1,269 @@ +libsixel_la-allocator.lo: allocator.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + allocator.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + malloc_stub.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +allocator.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +malloc_stub.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-chunk.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-chunk.Plo new file mode 100644 index 0000000000..fa5709cef2 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-chunk.Plo @@ -0,0 +1,401 @@ +libsixel_la-chunk.lo: chunk.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stat.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_s_ifmt.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/fcntl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/fcntl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_sync.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_dsync.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curlver.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/system.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/socket.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_param.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_param.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/net/net_kev.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sa_family_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_socklen_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_iovec_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/easy.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/multi.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/urlapi.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/select.h \ + chunk.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + allocator.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stat.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_s_ifmt.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/fcntl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/fcntl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_sync.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_dsync.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curlver.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/system.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/socket.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_param.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_param.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/net/net_kev.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sa_family_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_socklen_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_iovec_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/easy.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/multi.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/urlapi.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/select.h: + +chunk.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +allocator.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-decoder.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-decoder.Plo new file mode 100644 index 0000000000..6eae7ef946 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-decoder.Plo @@ -0,0 +1,377 @@ +libsixel_la-decoder.lo: decoder.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/select.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/termios.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/termios.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioctl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ttycom.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioccom.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/filio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/sockio.h \ + decoder.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/select.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/termios.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/termios.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioctl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ttycom.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioccom.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/filio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/sockio.h: + +decoder.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-dither.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-dither.Plo new file mode 100644 index 0000000000..5ee02abb10 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-dither.Plo @@ -0,0 +1,233 @@ +libsixel_la-dither.lo: dither.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + dither.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + quant.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: + +dither.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +quant.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-encoder.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-encoder.Plo new file mode 100644 index 0000000000..607ceacd31 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-encoder.Plo @@ -0,0 +1,376 @@ +libsixel_la-encoder.lo: encoder.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stat.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_s_ifmt.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/fcntl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/fcntl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_sync.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_dsync.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + tty.h encoder.h rgblookup.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stat.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_s_ifmt.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/fcntl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/fcntl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_sync.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_o_dsync.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +tty.h: + +encoder.h: + +rgblookup.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-frame.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-frame.Plo new file mode 100644 index 0000000000..009502e165 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-frame.Plo @@ -0,0 +1,230 @@ +libsixel_la-frame.lo: frame.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + frame.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: + +frame.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-fromgif.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-fromgif.Plo new file mode 100644 index 0000000000..d15a2deae6 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-fromgif.Plo @@ -0,0 +1,194 @@ +libsixel_la-fromgif.lo: fromgif.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ctype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/runetype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h \ + frame.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + fromgif.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ctype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/runetype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h: + +frame.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +fromgif.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-frompnm.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-frompnm.Plo new file mode 100644 index 0000000000..d87bba76b4 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-frompnm.Plo @@ -0,0 +1,186 @@ +libsixel_la-frompnm.lo: frompnm.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ctype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/runetype.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ctype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/runetype.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-fromsixel.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-fromsixel.Plo new file mode 100644 index 0000000000..6ee32b329a --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-fromsixel.Plo @@ -0,0 +1,237 @@ +libsixel_la-fromsixel.lo: fromsixel.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ctype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/runetype.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + output.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ctype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/runetype.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +output.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-loader.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-loader.Plo new file mode 100644 index 0000000000..347f896480 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-loader.Plo @@ -0,0 +1,271 @@ +libsixel_la-loader.lo: loader.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + frame.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + chunk.h frompnm.h fromgif.h allocator.h stb_image.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +frame.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +chunk.h: + +frompnm.h: + +fromgif.h: + +allocator.h: + +stb_image.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-malloc_stub.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-malloc_stub.Plo new file mode 100644 index 0000000000..664dacfdde --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-malloc_stub.Plo @@ -0,0 +1,252 @@ +libsixel_la-malloc_stub.lo: malloc_stub.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-output.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-output.Plo new file mode 100644 index 0000000000..1d48818c13 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-output.Plo @@ -0,0 +1,177 @@ +libsixel_la-output.lo: output.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + output.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +output.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-pixelformat.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-pixelformat.Plo new file mode 100644 index 0000000000..27544968ed --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-pixelformat.Plo @@ -0,0 +1,180 @@ +libsixel_la-pixelformat.lo: pixelformat.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-quant.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-quant.Plo new file mode 100644 index 0000000000..cc79962075 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-quant.Plo @@ -0,0 +1,230 @@ +libsixel_la-quant.lo: quant.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + quant.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: + +quant.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-scale.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-scale.Plo new file mode 100644 index 0000000000..ac7e098f40 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-scale.Plo @@ -0,0 +1,153 @@ +libsixel_la-scale.lo: scale.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-status.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-status.Plo new file mode 100644 index 0000000000..d6f227be46 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-status.Plo @@ -0,0 +1,369 @@ +libsixel_la-status.lo: status.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curlver.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/system.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/socket.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_param.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_param.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/net/net_kev.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sa_family_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_socklen_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_iovec_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/easy.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/multi.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/urlapi.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + status.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/memory.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/curlver.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/system.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/socket.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_param.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_param.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/net/net_kev.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sa_family_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_socklen_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_iovec_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/easy.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/multi.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/curl/urlapi.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +status.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-stb_image_write.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-stb_image_write.Plo new file mode 100644 index 0000000000..a189460bf9 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-stb_image_write.Plo @@ -0,0 +1,180 @@ +libsixel_la-stb_image_write.lo: stb_image_write.c ../config.h \ + stb_image_write.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h + +../config.h: + +stb_image_write.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdarg.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-tosixel.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-tosixel.Plo new file mode 100644 index 0000000000..490754fd47 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-tosixel.Plo @@ -0,0 +1,230 @@ +libsixel_la-tosixel.lo: tosixel.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h \ + output.h dither.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_limits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/inttypes.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdint.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uint64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_intmax_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types/_uintmax_t.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: + +output.h: + +dither.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-tty.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-tty.Plo new file mode 100644 index 0000000000..49a839b980 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-tty.Plo @@ -0,0 +1,339 @@ +libsixel_la-tty.lo: tty.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/select.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/termios.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/termios.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioctl.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ttycom.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioccom.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/filio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/sockio.h \ + ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/time.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_def.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timespec.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_time_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_suseconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_setsize.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_clr.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_isset.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fd_zero.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_select.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/endian.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_caddr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_dev_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_blksize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_gid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_addr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_in_port_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ino_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_mode_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_nlink_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_clock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ssize_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_useconds_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_cond_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_condattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutex_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_mutexattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_once_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlock_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_rwlockattr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_key_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsblkcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_fsfilcnt_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_posix_vdisable.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_seek_set.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/select.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/termios.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/termios.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioctl.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ttycom.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/ioccom.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/filio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/sockio.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/libsixel_la-writer.Plo b/ThirdParty/libsixel/src/.deps/libsixel_la-writer.Plo new file mode 100644 index 0000000000..eea822d268 --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/libsixel_la-writer.Plo @@ -0,0 +1,185 @@ +libsixel_la-writer.lo: writer.c ../config.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h \ + /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h \ + stb_image_write.h ../include/sixel.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h \ + /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h + +../config.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_symbol_aliasing.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_posix_availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_va_list.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/types.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int8_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int16_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int32_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_u_int64_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_intptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uintptr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_null.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctermid.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_stdio.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_common.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdlib.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/wait.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_pid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_id_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/appleapiopts.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/_mcontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/machine/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/arm/_structs.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_pthread/_pthread_attr_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_ucontext.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigset_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_uid_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_timeval.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_wchar_t.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/secure/_string.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/errno.h: + +/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/errno.h: + +stb_image_write.h: + +../include/sixel.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/stddef.h: + +/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/__stddef_max_align_t.h: diff --git a/ThirdParty/libsixel/src/.deps/tests-tests.Po b/ThirdParty/libsixel/src/.deps/tests-tests.Po new file mode 100644 index 0000000000..9ce06a81ea --- /dev/null +++ b/ThirdParty/libsixel/src/.deps/tests-tests.Po @@ -0,0 +1 @@ +# dummy diff --git a/ThirdParty/libsixel/src/Makefile b/ThirdParty/libsixel/src/Makefile new file mode 100644 index 0000000000..71db16a8a0 --- /dev/null +++ b/ThirdParty/libsixel/src/Makefile @@ -0,0 +1,1082 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/sixel +pkgincludedir = $(includedir)/sixel +pkglibdir = $(libdir)/sixel +pkglibexecdir = $(libexecdir)/sixel +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = arm-apple-darwin20.0.0 +host_triplet = arm-apple-darwin20.0.0 +#noinst_PROGRAMS = tests$(EXEEXT) +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_gcc_builtin.m4 \ + $(top_srcdir)/m4/ax_gcc_func_attribute.m4 \ + $(top_srcdir)/m4/ax_gcc_var_attribute.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man5dir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libsixel_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +am_libsixel_la_OBJECTS = libsixel_la-output.lo \ + libsixel_la-fromsixel.lo libsixel_la-tosixel.lo \ + libsixel_la-quant.lo libsixel_la-dither.lo \ + libsixel_la-frame.lo libsixel_la-pixelformat.lo \ + libsixel_la-scale.lo libsixel_la-chunk.lo \ + libsixel_la-loader.lo libsixel_la-frompnm.lo \ + libsixel_la-fromgif.lo libsixel_la-encoder.lo \ + libsixel_la-decoder.lo libsixel_la-writer.lo \ + libsixel_la-stb_image_write.lo libsixel_la-status.lo \ + libsixel_la-malloc_stub.lo libsixel_la-allocator.lo \ + libsixel_la-tty.lo +libsixel_la_OBJECTS = $(am_libsixel_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +libsixel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libsixel_la_CFLAGS) \ + $(CFLAGS) $(libsixel_la_LDFLAGS) $(LDFLAGS) -o $@ +am__tests_SOURCES_DIST = $(srcdir)/tests.c +#am_tests_OBJECTS = tests-tests.$(OBJEXT) +tests_OBJECTS = $(am_tests_OBJECTS) +#tests_DEPENDENCIES = $(srcdir)/libsixel.la +tests_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(tests_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/libsixel_la-allocator.Plo \ + ./$(DEPDIR)/libsixel_la-chunk.Plo \ + ./$(DEPDIR)/libsixel_la-decoder.Plo \ + ./$(DEPDIR)/libsixel_la-dither.Plo \ + ./$(DEPDIR)/libsixel_la-encoder.Plo \ + ./$(DEPDIR)/libsixel_la-frame.Plo \ + ./$(DEPDIR)/libsixel_la-fromgif.Plo \ + ./$(DEPDIR)/libsixel_la-frompnm.Plo \ + ./$(DEPDIR)/libsixel_la-fromsixel.Plo \ + ./$(DEPDIR)/libsixel_la-loader.Plo \ + ./$(DEPDIR)/libsixel_la-malloc_stub.Plo \ + ./$(DEPDIR)/libsixel_la-output.Plo \ + ./$(DEPDIR)/libsixel_la-pixelformat.Plo \ + ./$(DEPDIR)/libsixel_la-quant.Plo \ + ./$(DEPDIR)/libsixel_la-scale.Plo \ + ./$(DEPDIR)/libsixel_la-status.Plo \ + ./$(DEPDIR)/libsixel_la-stb_image_write.Plo \ + ./$(DEPDIR)/libsixel_la-tosixel.Plo \ + ./$(DEPDIR)/libsixel_la-tty.Plo \ + ./$(DEPDIR)/libsixel_la-writer.Plo ./$(DEPDIR)/tests-tests.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libsixel_la_SOURCES) $(tests_SOURCES) +DIST_SOURCES = $(libsixel_la_SOURCES) $(am__tests_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +man5dir = $(mandir)/man5 +NROFF = nroff +MANS = $(dist_man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +ACLOCAL = ${SHELL} /Users/stuartcarnie/projects/macos/libsixel/missing aclocal-1.16 +AMTAR = $${TAR-tar} +AM_CFLAGS = -Wall -Wextra -Wformat=2 -Bsymbolic +AM_CPPFLAGS = +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTOCONF = ${SHELL} /Users/stuartcarnie/projects/macos/libsixel/missing autoconf +AUTOHEADER = ${SHELL} /Users/stuartcarnie/projects/macos/libsixel/missing autoheader +AUTOMAKE = ${SHELL} /Users/stuartcarnie/projects/macos/libsixel/missing automake-1.16 +AWK = awk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = dsymutil +DUMPBIN = +ECHO_C = \c +ECHO_N = +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +FGREP = /usr/bin/grep -F +GDK_PIXBUF_CFLAGS = +GDK_PIXBUF_LIBS = +GD_CFLAGS = +GD_LIBS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld +LDFLAGS = +LIBCURL_CFLAGS = -I/usr/local/include +LIBCURL_LIBS = -L/usr/local/lib -lcurl +LIBJPEG_CFLAGS = +LIBJPEG_LIBS = +LIBOBJS = +LIBPNG_CFLAGS = +LIBPNG_LIBS = +LIBS = -lm +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = lipo +LN_S = ln -s +LS_LTVERSION = 1:6:0 +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAKEINFO = ${SHELL} /Users/stuartcarnie/projects/macos/libsixel/missing makeinfo +MANIFEST_TOOL = : +MD5SUM = md5 +MKDIR_P = .././install-sh -c -d +NM = /usr/bin/nm -B +NMEDIT = nmedit +OBJDUMP = objdump +OBJEXT = o +OTOOL = otool +OTOOL64 = : +PACKAGE = sixel +PACKAGE_BUGREPORT = saitoha@me.com +PACKAGE_DESCRIPTION = A lightweight, fast implementation of DEC SIXEL graphics codec +PACKAGE_NAME = sixel +PACKAGE_STRING = sixel 1.8.6 +PACKAGE_TARNAME = sixel +PACKAGE_URL = +PACKAGE_VERSION = 1.8.6 +PATH_SEPARATOR = : +PKG_CONFIG = /usr/local/bin/pkg-config +PKG_CONFIG_LIBDIR = +PKG_CONFIG_PATH = +PYTHON = /usr/bin/python +PYTHON_EXEC_PREFIX = ${exec_prefix} +PYTHON_PLATFORM = darwin +PYTHON_PREFIX = ${prefix} +PYTHON_VERSION = 2.7 +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +STRIP = strip +VERSION = 1.8.6 +abs_builddir = /Users/stuartcarnie/projects/macos/libsixel/src +abs_srcdir = /Users/stuartcarnie/projects/macos/libsixel/src +abs_top_builddir = /Users/stuartcarnie/projects/macos/libsixel +abs_top_srcdir = /Users/stuartcarnie/projects/macos/libsixel +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +attr_func_deprecated = __attribute__((deprecated)) +attr_var_deprecated = +bashcompletiondir = ${datarootdir}/bash-completion/completions +bindir = ${exec_prefix}/bin +build = arm-apple-darwin20.0.0 +build_alias = +build_cpu = arm +build_os = darwin20.0.0 +build_vendor = apple +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = arm-apple-darwin20.0.0 +host_alias = +host_cpu = arm +host_os = darwin20.0.0 +host_vendor = apple +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /Users/stuartcarnie/projects/macos/libsixel/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgconfigdir = ${exec_prefix}/lib/pkgconfig +pkgpyexecdir = ${pyexecdir}/sixel +pkgpythondir = ${pythondir}/sixel +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +pyexecdir = ${exec_prefix}/lib/python2.7/site-packages +pythondir = ${prefix}/lib/python2.7/site-packages +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +zshcompletiondir = ${datarootdir}/zsh/site-functions +#MAYBE_COVERAGE = --coverage +CLEANFILES = *.gcno *.gcda *.gcov *.log test-output.* tests +lib_LTLIBRARIES = libsixel.la +libsixel_la_SOURCES = \ + $(srcdir)/output.c \ + $(srcdir)/output.h \ + $(srcdir)/fromsixel.c \ + $(srcdir)/tosixel.c \ + $(srcdir)/quant.c \ + $(srcdir)/quant.h \ + $(srcdir)/dither.c \ + $(srcdir)/dither.h \ + $(srcdir)/frame.c \ + $(srcdir)/frame.h \ + $(srcdir)/pixelformat.c \ + $(srcdir)/pixelformat.h \ + $(srcdir)/scale.c \ + $(srcdir)/chunk.c \ + $(srcdir)/chunk.h \ + $(srcdir)/loader.c \ + $(srcdir)/loader.h \ + $(srcdir)/frompnm.c \ + $(srcdir)/frompnm.h \ + $(srcdir)/fromgif.c \ + $(srcdir)/fromgif.h \ + $(srcdir)/encoder.c \ + $(srcdir)/encoder.h \ + $(srcdir)/decoder.c \ + $(srcdir)/decoder.h \ + $(srcdir)/stb_image.h \ + $(srcdir)/writer.c \ + $(srcdir)/writer.h \ + $(srcdir)/stb_image_write.c \ + $(srcdir)/stb_image_write.h \ + $(srcdir)/status.c \ + $(srcdir)/status.h \ + $(srcdir)/malloc_stub.c \ + $(srcdir)/malloc_stub.h \ + $(srcdir)/allocator.c \ + $(srcdir)/allocator.h \ + $(srcdir)/tty.c \ + $(srcdir)/tty.h \ + $(srcdir)/rgblookup.h + +libsixel_la_CPPFLAGS = -I$(top_builddir)/include/ +libsixel_la_CFLAGS = $(CFLAGS) $(AM_CFLAGS) $(MAYBE_COVERAGE) \ + $(LIBCURL_CFLAGS) \ + $(LIBPNG_CFLAGS) \ + $(LIBJPEG_CFLAGS) \ + $(GDK_PIXBUF_CFLAGS) \ + $(GD_CFLAGS) + +libsixel_la_LDFLAGS = -no-undefined -version-info $(LS_LTVERSION) +libsixel_la_LIBADD = -lm \ + $(LIBCURL_LIBS) \ + $(LIBPNG_LIBS) \ + $(LIBJPEG_LIBS) \ + $(GDK_PIXBUF_LIBS) \ + $(GD_LIBS) + +#tests_SOURCES = $(srcdir)/tests.c +#tests_CPPFLAGS = -I$(top_builddir)/include/ \ +# -I$(top_builddir)/src/ $(AM_CPPFLAGS) + +#tests_CFLAGS = $(CFLAGS) $(AM_CFLAGS) $(MAYBE_COVERAGE) +#tests_LDADD = $(srcdir)/libsixel.la +dist_man_MANS = $(srcdir)/sixel.5 +EXTRA_DIST = $(srcdir)/rgblookup.gperf +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libsixel.la: $(libsixel_la_OBJECTS) $(libsixel_la_DEPENDENCIES) $(EXTRA_libsixel_la_DEPENDENCIES) + $(AM_V_CCLD)$(libsixel_la_LINK) -rpath $(libdir) $(libsixel_la_OBJECTS) $(libsixel_la_LIBADD) $(LIBS) + +tests$(EXEEXT): $(tests_OBJECTS) $(tests_DEPENDENCIES) $(EXTRA_tests_DEPENDENCIES) + @rm -f tests$(EXEEXT) + $(AM_V_CCLD)$(tests_LINK) $(tests_OBJECTS) $(tests_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/libsixel_la-allocator.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-chunk.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-decoder.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-dither.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-encoder.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-frame.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-fromgif.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-frompnm.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-fromsixel.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-loader.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-malloc_stub.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-output.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-pixelformat.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-quant.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-scale.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-status.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-stb_image_write.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-tosixel.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-tty.Plo # am--include-marker +include ./$(DEPDIR)/libsixel_la-writer.Plo # am--include-marker +include ./$(DEPDIR)/tests-tests.Po # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: + $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +libsixel_la-output.lo: output.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-output.lo -MD -MP -MF $(DEPDIR)/libsixel_la-output.Tpo -c -o libsixel_la-output.lo `test -f 'output.c' || echo '$(srcdir)/'`output.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-output.Tpo $(DEPDIR)/libsixel_la-output.Plo +# $(AM_V_CC)source='output.c' object='libsixel_la-output.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-output.lo `test -f 'output.c' || echo '$(srcdir)/'`output.c + +libsixel_la-fromsixel.lo: fromsixel.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-fromsixel.lo -MD -MP -MF $(DEPDIR)/libsixel_la-fromsixel.Tpo -c -o libsixel_la-fromsixel.lo `test -f 'fromsixel.c' || echo '$(srcdir)/'`fromsixel.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-fromsixel.Tpo $(DEPDIR)/libsixel_la-fromsixel.Plo +# $(AM_V_CC)source='fromsixel.c' object='libsixel_la-fromsixel.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-fromsixel.lo `test -f 'fromsixel.c' || echo '$(srcdir)/'`fromsixel.c + +libsixel_la-tosixel.lo: tosixel.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-tosixel.lo -MD -MP -MF $(DEPDIR)/libsixel_la-tosixel.Tpo -c -o libsixel_la-tosixel.lo `test -f 'tosixel.c' || echo '$(srcdir)/'`tosixel.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-tosixel.Tpo $(DEPDIR)/libsixel_la-tosixel.Plo +# $(AM_V_CC)source='tosixel.c' object='libsixel_la-tosixel.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-tosixel.lo `test -f 'tosixel.c' || echo '$(srcdir)/'`tosixel.c + +libsixel_la-quant.lo: quant.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-quant.lo -MD -MP -MF $(DEPDIR)/libsixel_la-quant.Tpo -c -o libsixel_la-quant.lo `test -f 'quant.c' || echo '$(srcdir)/'`quant.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-quant.Tpo $(DEPDIR)/libsixel_la-quant.Plo +# $(AM_V_CC)source='quant.c' object='libsixel_la-quant.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-quant.lo `test -f 'quant.c' || echo '$(srcdir)/'`quant.c + +libsixel_la-dither.lo: dither.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-dither.lo -MD -MP -MF $(DEPDIR)/libsixel_la-dither.Tpo -c -o libsixel_la-dither.lo `test -f 'dither.c' || echo '$(srcdir)/'`dither.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-dither.Tpo $(DEPDIR)/libsixel_la-dither.Plo +# $(AM_V_CC)source='dither.c' object='libsixel_la-dither.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-dither.lo `test -f 'dither.c' || echo '$(srcdir)/'`dither.c + +libsixel_la-frame.lo: frame.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-frame.lo -MD -MP -MF $(DEPDIR)/libsixel_la-frame.Tpo -c -o libsixel_la-frame.lo `test -f 'frame.c' || echo '$(srcdir)/'`frame.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-frame.Tpo $(DEPDIR)/libsixel_la-frame.Plo +# $(AM_V_CC)source='frame.c' object='libsixel_la-frame.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-frame.lo `test -f 'frame.c' || echo '$(srcdir)/'`frame.c + +libsixel_la-pixelformat.lo: pixelformat.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-pixelformat.lo -MD -MP -MF $(DEPDIR)/libsixel_la-pixelformat.Tpo -c -o libsixel_la-pixelformat.lo `test -f 'pixelformat.c' || echo '$(srcdir)/'`pixelformat.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-pixelformat.Tpo $(DEPDIR)/libsixel_la-pixelformat.Plo +# $(AM_V_CC)source='pixelformat.c' object='libsixel_la-pixelformat.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-pixelformat.lo `test -f 'pixelformat.c' || echo '$(srcdir)/'`pixelformat.c + +libsixel_la-scale.lo: scale.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-scale.lo -MD -MP -MF $(DEPDIR)/libsixel_la-scale.Tpo -c -o libsixel_la-scale.lo `test -f 'scale.c' || echo '$(srcdir)/'`scale.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-scale.Tpo $(DEPDIR)/libsixel_la-scale.Plo +# $(AM_V_CC)source='scale.c' object='libsixel_la-scale.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-scale.lo `test -f 'scale.c' || echo '$(srcdir)/'`scale.c + +libsixel_la-chunk.lo: chunk.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-chunk.lo -MD -MP -MF $(DEPDIR)/libsixel_la-chunk.Tpo -c -o libsixel_la-chunk.lo `test -f 'chunk.c' || echo '$(srcdir)/'`chunk.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-chunk.Tpo $(DEPDIR)/libsixel_la-chunk.Plo +# $(AM_V_CC)source='chunk.c' object='libsixel_la-chunk.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-chunk.lo `test -f 'chunk.c' || echo '$(srcdir)/'`chunk.c + +libsixel_la-loader.lo: loader.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-loader.lo -MD -MP -MF $(DEPDIR)/libsixel_la-loader.Tpo -c -o libsixel_la-loader.lo `test -f 'loader.c' || echo '$(srcdir)/'`loader.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-loader.Tpo $(DEPDIR)/libsixel_la-loader.Plo +# $(AM_V_CC)source='loader.c' object='libsixel_la-loader.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-loader.lo `test -f 'loader.c' || echo '$(srcdir)/'`loader.c + +libsixel_la-frompnm.lo: frompnm.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-frompnm.lo -MD -MP -MF $(DEPDIR)/libsixel_la-frompnm.Tpo -c -o libsixel_la-frompnm.lo `test -f 'frompnm.c' || echo '$(srcdir)/'`frompnm.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-frompnm.Tpo $(DEPDIR)/libsixel_la-frompnm.Plo +# $(AM_V_CC)source='frompnm.c' object='libsixel_la-frompnm.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-frompnm.lo `test -f 'frompnm.c' || echo '$(srcdir)/'`frompnm.c + +libsixel_la-fromgif.lo: fromgif.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-fromgif.lo -MD -MP -MF $(DEPDIR)/libsixel_la-fromgif.Tpo -c -o libsixel_la-fromgif.lo `test -f 'fromgif.c' || echo '$(srcdir)/'`fromgif.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-fromgif.Tpo $(DEPDIR)/libsixel_la-fromgif.Plo +# $(AM_V_CC)source='fromgif.c' object='libsixel_la-fromgif.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-fromgif.lo `test -f 'fromgif.c' || echo '$(srcdir)/'`fromgif.c + +libsixel_la-encoder.lo: encoder.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-encoder.lo -MD -MP -MF $(DEPDIR)/libsixel_la-encoder.Tpo -c -o libsixel_la-encoder.lo `test -f 'encoder.c' || echo '$(srcdir)/'`encoder.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-encoder.Tpo $(DEPDIR)/libsixel_la-encoder.Plo +# $(AM_V_CC)source='encoder.c' object='libsixel_la-encoder.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-encoder.lo `test -f 'encoder.c' || echo '$(srcdir)/'`encoder.c + +libsixel_la-decoder.lo: decoder.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-decoder.lo -MD -MP -MF $(DEPDIR)/libsixel_la-decoder.Tpo -c -o libsixel_la-decoder.lo `test -f 'decoder.c' || echo '$(srcdir)/'`decoder.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-decoder.Tpo $(DEPDIR)/libsixel_la-decoder.Plo +# $(AM_V_CC)source='decoder.c' object='libsixel_la-decoder.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-decoder.lo `test -f 'decoder.c' || echo '$(srcdir)/'`decoder.c + +libsixel_la-writer.lo: writer.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-writer.lo -MD -MP -MF $(DEPDIR)/libsixel_la-writer.Tpo -c -o libsixel_la-writer.lo `test -f 'writer.c' || echo '$(srcdir)/'`writer.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-writer.Tpo $(DEPDIR)/libsixel_la-writer.Plo +# $(AM_V_CC)source='writer.c' object='libsixel_la-writer.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-writer.lo `test -f 'writer.c' || echo '$(srcdir)/'`writer.c + +libsixel_la-stb_image_write.lo: stb_image_write.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-stb_image_write.lo -MD -MP -MF $(DEPDIR)/libsixel_la-stb_image_write.Tpo -c -o libsixel_la-stb_image_write.lo `test -f 'stb_image_write.c' || echo '$(srcdir)/'`stb_image_write.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-stb_image_write.Tpo $(DEPDIR)/libsixel_la-stb_image_write.Plo +# $(AM_V_CC)source='stb_image_write.c' object='libsixel_la-stb_image_write.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-stb_image_write.lo `test -f 'stb_image_write.c' || echo '$(srcdir)/'`stb_image_write.c + +libsixel_la-status.lo: status.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-status.lo -MD -MP -MF $(DEPDIR)/libsixel_la-status.Tpo -c -o libsixel_la-status.lo `test -f 'status.c' || echo '$(srcdir)/'`status.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-status.Tpo $(DEPDIR)/libsixel_la-status.Plo +# $(AM_V_CC)source='status.c' object='libsixel_la-status.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-status.lo `test -f 'status.c' || echo '$(srcdir)/'`status.c + +libsixel_la-malloc_stub.lo: malloc_stub.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-malloc_stub.lo -MD -MP -MF $(DEPDIR)/libsixel_la-malloc_stub.Tpo -c -o libsixel_la-malloc_stub.lo `test -f 'malloc_stub.c' || echo '$(srcdir)/'`malloc_stub.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-malloc_stub.Tpo $(DEPDIR)/libsixel_la-malloc_stub.Plo +# $(AM_V_CC)source='malloc_stub.c' object='libsixel_la-malloc_stub.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-malloc_stub.lo `test -f 'malloc_stub.c' || echo '$(srcdir)/'`malloc_stub.c + +libsixel_la-allocator.lo: allocator.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-allocator.lo -MD -MP -MF $(DEPDIR)/libsixel_la-allocator.Tpo -c -o libsixel_la-allocator.lo `test -f 'allocator.c' || echo '$(srcdir)/'`allocator.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-allocator.Tpo $(DEPDIR)/libsixel_la-allocator.Plo +# $(AM_V_CC)source='allocator.c' object='libsixel_la-allocator.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-allocator.lo `test -f 'allocator.c' || echo '$(srcdir)/'`allocator.c + +libsixel_la-tty.lo: tty.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-tty.lo -MD -MP -MF $(DEPDIR)/libsixel_la-tty.Tpo -c -o libsixel_la-tty.lo `test -f 'tty.c' || echo '$(srcdir)/'`tty.c + $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-tty.Tpo $(DEPDIR)/libsixel_la-tty.Plo +# $(AM_V_CC)source='tty.c' object='libsixel_la-tty.lo' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-tty.lo `test -f 'tty.c' || echo '$(srcdir)/'`tty.c + +tests-tests.o: tests.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -MT tests-tests.o -MD -MP -MF $(DEPDIR)/tests-tests.Tpo -c -o tests-tests.o `test -f 'tests.c' || echo '$(srcdir)/'`tests.c + $(AM_V_at)$(am__mv) $(DEPDIR)/tests-tests.Tpo $(DEPDIR)/tests-tests.Po +# $(AM_V_CC)source='tests.c' object='tests-tests.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -c -o tests-tests.o `test -f 'tests.c' || echo '$(srcdir)/'`tests.c + +tests-tests.obj: tests.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -MT tests-tests.obj -MD -MP -MF $(DEPDIR)/tests-tests.Tpo -c -o tests-tests.obj `if test -f 'tests.c'; then $(CYGPATH_W) 'tests.c'; else $(CYGPATH_W) '$(srcdir)/tests.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/tests-tests.Tpo $(DEPDIR)/tests-tests.Po +# $(AM_V_CC)source='tests.c' object='tests-tests.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -c -o tests-tests.obj `if test -f 'tests.c'; then $(CYGPATH_W) 'tests.c'; else $(CYGPATH_W) '$(srcdir)/tests.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man5: $(dist_man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS)'; \ + test -n "$(man5dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.5[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ + done; } + +uninstall-man5: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.5[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(MANS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man5dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/libsixel_la-allocator.Plo + -rm -f ./$(DEPDIR)/libsixel_la-chunk.Plo + -rm -f ./$(DEPDIR)/libsixel_la-decoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-dither.Plo + -rm -f ./$(DEPDIR)/libsixel_la-encoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frame.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromgif.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frompnm.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromsixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-loader.Plo + -rm -f ./$(DEPDIR)/libsixel_la-malloc_stub.Plo + -rm -f ./$(DEPDIR)/libsixel_la-output.Plo + -rm -f ./$(DEPDIR)/libsixel_la-pixelformat.Plo + -rm -f ./$(DEPDIR)/libsixel_la-quant.Plo + -rm -f ./$(DEPDIR)/libsixel_la-scale.Plo + -rm -f ./$(DEPDIR)/libsixel_la-status.Plo + -rm -f ./$(DEPDIR)/libsixel_la-stb_image_write.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tosixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tty.Plo + -rm -f ./$(DEPDIR)/libsixel_la-writer.Plo + -rm -f ./$(DEPDIR)/tests-tests.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man5 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/libsixel_la-allocator.Plo + -rm -f ./$(DEPDIR)/libsixel_la-chunk.Plo + -rm -f ./$(DEPDIR)/libsixel_la-decoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-dither.Plo + -rm -f ./$(DEPDIR)/libsixel_la-encoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frame.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromgif.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frompnm.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromsixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-loader.Plo + -rm -f ./$(DEPDIR)/libsixel_la-malloc_stub.Plo + -rm -f ./$(DEPDIR)/libsixel_la-output.Plo + -rm -f ./$(DEPDIR)/libsixel_la-pixelformat.Plo + -rm -f ./$(DEPDIR)/libsixel_la-quant.Plo + -rm -f ./$(DEPDIR)/libsixel_la-scale.Plo + -rm -f ./$(DEPDIR)/libsixel_la-status.Plo + -rm -f ./$(DEPDIR)/libsixel_la-stb_image_write.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tosixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tty.Plo + -rm -f ./$(DEPDIR)/libsixel_la-writer.Plo + -rm -f ./$(DEPDIR)/tests-tests.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-man + +uninstall-man: uninstall-man5 + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-man5 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ + uninstall-man uninstall-man5 + +.PRECIOUS: Makefile + + +unittest: all +# $(srcdir)/tests + +gen-rgblookup: $(srcdir)/rgblookup.gperf + gperf -C -N lookup_rgb --ignore-case $< |\ + sed 's/{""}/\{"", 0, 0, 0\}/g' |\ + astyle > $(srcdir)/rgblookup.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/ThirdParty/libsixel/src/Makefile.am b/ThirdParty/libsixel/src/Makefile.am new file mode 100644 index 0000000000..200dcca896 --- /dev/null +++ b/ThirdParty/libsixel/src/Makefile.am @@ -0,0 +1,94 @@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +top_builddir = @top_builddir@ +builddir = @builddir@ + +if COND_GCOV +MAYBE_COVERAGE = --coverage +endif + +CLEANFILES = *.gcno *.gcda *.gcov *.log test-output.* tests + +lib_LTLIBRARIES = libsixel.la +libsixel_la_SOURCES = \ + $(srcdir)/output.c \ + $(srcdir)/output.h \ + $(srcdir)/fromsixel.c \ + $(srcdir)/tosixel.c \ + $(srcdir)/quant.c \ + $(srcdir)/quant.h \ + $(srcdir)/dither.c \ + $(srcdir)/dither.h \ + $(srcdir)/frame.c \ + $(srcdir)/frame.h \ + $(srcdir)/pixelformat.c \ + $(srcdir)/pixelformat.h \ + $(srcdir)/scale.c \ + $(srcdir)/chunk.c \ + $(srcdir)/chunk.h \ + $(srcdir)/loader.c \ + $(srcdir)/loader.h \ + $(srcdir)/frompnm.c \ + $(srcdir)/frompnm.h \ + $(srcdir)/fromgif.c \ + $(srcdir)/fromgif.h \ + $(srcdir)/encoder.c \ + $(srcdir)/encoder.h \ + $(srcdir)/decoder.c \ + $(srcdir)/decoder.h \ + $(srcdir)/stb_image.h \ + $(srcdir)/writer.c \ + $(srcdir)/writer.h \ + $(srcdir)/stb_image_write.c \ + $(srcdir)/stb_image_write.h \ + $(srcdir)/status.c \ + $(srcdir)/status.h \ + $(srcdir)/malloc_stub.c \ + $(srcdir)/malloc_stub.h \ + $(srcdir)/allocator.c \ + $(srcdir)/allocator.h \ + $(srcdir)/tty.c \ + $(srcdir)/tty.h \ + $(srcdir)/rgblookup.h +libsixel_la_CPPFLAGS = -I$(top_builddir)/include/ +libsixel_la_CFLAGS = $(CFLAGS) $(AM_CFLAGS) $(MAYBE_COVERAGE) \ + $(LIBCURL_CFLAGS) \ + $(LIBPNG_CFLAGS) \ + $(LIBJPEG_CFLAGS) \ + $(GDK_PIXBUF_CFLAGS) \ + $(GD_CFLAGS) +libsixel_la_LDFLAGS = -no-undefined -version-info $(LS_LTVERSION) +libsixel_la_LIBADD = -lm \ + $(LIBCURL_LIBS) \ + $(LIBPNG_LIBS) \ + $(LIBJPEG_LIBS) \ + $(GDK_PIXBUF_LIBS) \ + $(GD_LIBS) + +if COND_TESTS +noinst_PROGRAMS = tests +tests_SOURCES = $(srcdir)/tests.c +tests_CPPFLAGS = -I$(top_builddir)/include/ \ + -I$(top_builddir)/src/ $(AM_CPPFLAGS) +tests_CFLAGS = $(CFLAGS) $(AM_CFLAGS) $(MAYBE_COVERAGE) +tests_LDADD = $(srcdir)/libsixel.la +endif + +dist_man_MANS = $(srcdir)/sixel.5 +EXTRA_DIST = $(srcdir)/rgblookup.gperf + +unittest: all +if COND_TESTS + $(srcdir)/tests +endif + +gen-rgblookup: $(srcdir)/rgblookup.gperf + gperf -C -N lookup_rgb --ignore-case $< |\ + sed 's/{""}/\{"", 0, 0, 0\}/g' |\ + astyle > $(srcdir)/rgblookup.h + + diff --git a/ThirdParty/libsixel/src/Makefile.in b/ThirdParty/libsixel/src/Makefile.in new file mode 100644 index 0000000000..88adc29d09 --- /dev/null +++ b/ThirdParty/libsixel/src/Makefile.in @@ -0,0 +1,1082 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@COND_TESTS_TRUE@noinst_PROGRAMS = tests$(EXEEXT) +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_gcc_builtin.m4 \ + $(top_srcdir)/m4/ax_gcc_func_attribute.m4 \ + $(top_srcdir)/m4/ax_gcc_var_attribute.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man5dir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libsixel_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +am_libsixel_la_OBJECTS = libsixel_la-output.lo \ + libsixel_la-fromsixel.lo libsixel_la-tosixel.lo \ + libsixel_la-quant.lo libsixel_la-dither.lo \ + libsixel_la-frame.lo libsixel_la-pixelformat.lo \ + libsixel_la-scale.lo libsixel_la-chunk.lo \ + libsixel_la-loader.lo libsixel_la-frompnm.lo \ + libsixel_la-fromgif.lo libsixel_la-encoder.lo \ + libsixel_la-decoder.lo libsixel_la-writer.lo \ + libsixel_la-stb_image_write.lo libsixel_la-status.lo \ + libsixel_la-malloc_stub.lo libsixel_la-allocator.lo \ + libsixel_la-tty.lo +libsixel_la_OBJECTS = $(am_libsixel_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libsixel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libsixel_la_CFLAGS) \ + $(CFLAGS) $(libsixel_la_LDFLAGS) $(LDFLAGS) -o $@ +am__tests_SOURCES_DIST = $(srcdir)/tests.c +@COND_TESTS_TRUE@am_tests_OBJECTS = tests-tests.$(OBJEXT) +tests_OBJECTS = $(am_tests_OBJECTS) +@COND_TESTS_TRUE@tests_DEPENDENCIES = $(srcdir)/libsixel.la +tests_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(tests_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/libsixel_la-allocator.Plo \ + ./$(DEPDIR)/libsixel_la-chunk.Plo \ + ./$(DEPDIR)/libsixel_la-decoder.Plo \ + ./$(DEPDIR)/libsixel_la-dither.Plo \ + ./$(DEPDIR)/libsixel_la-encoder.Plo \ + ./$(DEPDIR)/libsixel_la-frame.Plo \ + ./$(DEPDIR)/libsixel_la-fromgif.Plo \ + ./$(DEPDIR)/libsixel_la-frompnm.Plo \ + ./$(DEPDIR)/libsixel_la-fromsixel.Plo \ + ./$(DEPDIR)/libsixel_la-loader.Plo \ + ./$(DEPDIR)/libsixel_la-malloc_stub.Plo \ + ./$(DEPDIR)/libsixel_la-output.Plo \ + ./$(DEPDIR)/libsixel_la-pixelformat.Plo \ + ./$(DEPDIR)/libsixel_la-quant.Plo \ + ./$(DEPDIR)/libsixel_la-scale.Plo \ + ./$(DEPDIR)/libsixel_la-status.Plo \ + ./$(DEPDIR)/libsixel_la-stb_image_write.Plo \ + ./$(DEPDIR)/libsixel_la-tosixel.Plo \ + ./$(DEPDIR)/libsixel_la-tty.Plo \ + ./$(DEPDIR)/libsixel_la-writer.Plo ./$(DEPDIR)/tests-tests.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libsixel_la_SOURCES) $(tests_SOURCES) +DIST_SOURCES = $(libsixel_la_SOURCES) $(am__tests_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +man5dir = $(mandir)/man5 +NROFF = nroff +MANS = $(dist_man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +VPATH = @srcdir@ +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ +GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ +GD_CFLAGS = @GD_CFLAGS@ +GD_LIBS = @GD_LIBS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCURL_CFLAGS = @LIBCURL_CFLAGS@ +LIBCURL_LIBS = @LIBCURL_LIBS@ +LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@ +LIBJPEG_LIBS = @LIBJPEG_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBPNG_CFLAGS = @LIBPNG_CFLAGS@ +LIBPNG_LIBS = @LIBPNG_LIBS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LS_LTVERSION = @LS_LTVERSION@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MD5SUM = @MD5SUM@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_DESCRIPTION = @PACKAGE_DESCRIPTION@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +attr_func_deprecated = @attr_func_deprecated@ +attr_var_deprecated = @attr_var_deprecated@ +bashcompletiondir = @bashcompletiondir@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgconfigdir = @pkgconfigdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +zshcompletiondir = @zshcompletiondir@ +@COND_GCOV_TRUE@MAYBE_COVERAGE = --coverage +CLEANFILES = *.gcno *.gcda *.gcov *.log test-output.* tests +lib_LTLIBRARIES = libsixel.la +libsixel_la_SOURCES = \ + $(srcdir)/output.c \ + $(srcdir)/output.h \ + $(srcdir)/fromsixel.c \ + $(srcdir)/tosixel.c \ + $(srcdir)/quant.c \ + $(srcdir)/quant.h \ + $(srcdir)/dither.c \ + $(srcdir)/dither.h \ + $(srcdir)/frame.c \ + $(srcdir)/frame.h \ + $(srcdir)/pixelformat.c \ + $(srcdir)/pixelformat.h \ + $(srcdir)/scale.c \ + $(srcdir)/chunk.c \ + $(srcdir)/chunk.h \ + $(srcdir)/loader.c \ + $(srcdir)/loader.h \ + $(srcdir)/frompnm.c \ + $(srcdir)/frompnm.h \ + $(srcdir)/fromgif.c \ + $(srcdir)/fromgif.h \ + $(srcdir)/encoder.c \ + $(srcdir)/encoder.h \ + $(srcdir)/decoder.c \ + $(srcdir)/decoder.h \ + $(srcdir)/stb_image.h \ + $(srcdir)/writer.c \ + $(srcdir)/writer.h \ + $(srcdir)/stb_image_write.c \ + $(srcdir)/stb_image_write.h \ + $(srcdir)/status.c \ + $(srcdir)/status.h \ + $(srcdir)/malloc_stub.c \ + $(srcdir)/malloc_stub.h \ + $(srcdir)/allocator.c \ + $(srcdir)/allocator.h \ + $(srcdir)/tty.c \ + $(srcdir)/tty.h \ + $(srcdir)/rgblookup.h + +libsixel_la_CPPFLAGS = -I$(top_builddir)/include/ +libsixel_la_CFLAGS = $(CFLAGS) $(AM_CFLAGS) $(MAYBE_COVERAGE) \ + $(LIBCURL_CFLAGS) \ + $(LIBPNG_CFLAGS) \ + $(LIBJPEG_CFLAGS) \ + $(GDK_PIXBUF_CFLAGS) \ + $(GD_CFLAGS) + +libsixel_la_LDFLAGS = -no-undefined -version-info $(LS_LTVERSION) +libsixel_la_LIBADD = -lm \ + $(LIBCURL_LIBS) \ + $(LIBPNG_LIBS) \ + $(LIBJPEG_LIBS) \ + $(GDK_PIXBUF_LIBS) \ + $(GD_LIBS) + +@COND_TESTS_TRUE@tests_SOURCES = $(srcdir)/tests.c +@COND_TESTS_TRUE@tests_CPPFLAGS = -I$(top_builddir)/include/ \ +@COND_TESTS_TRUE@ -I$(top_builddir)/src/ $(AM_CPPFLAGS) + +@COND_TESTS_TRUE@tests_CFLAGS = $(CFLAGS) $(AM_CFLAGS) $(MAYBE_COVERAGE) +@COND_TESTS_TRUE@tests_LDADD = $(srcdir)/libsixel.la +dist_man_MANS = $(srcdir)/sixel.5 +EXTRA_DIST = $(srcdir)/rgblookup.gperf +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libsixel.la: $(libsixel_la_OBJECTS) $(libsixel_la_DEPENDENCIES) $(EXTRA_libsixel_la_DEPENDENCIES) + $(AM_V_CCLD)$(libsixel_la_LINK) -rpath $(libdir) $(libsixel_la_OBJECTS) $(libsixel_la_LIBADD) $(LIBS) + +tests$(EXEEXT): $(tests_OBJECTS) $(tests_DEPENDENCIES) $(EXTRA_tests_DEPENDENCIES) + @rm -f tests$(EXEEXT) + $(AM_V_CCLD)$(tests_LINK) $(tests_OBJECTS) $(tests_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-allocator.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-chunk.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-decoder.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-dither.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-encoder.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-fromgif.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-frompnm.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-fromsixel.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-loader.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-malloc_stub.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-output.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-pixelformat.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-quant.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-scale.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-status.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-stb_image_write.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-tosixel.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-tty.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsixel_la-writer.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tests-tests.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libsixel_la-output.lo: output.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-output.lo -MD -MP -MF $(DEPDIR)/libsixel_la-output.Tpo -c -o libsixel_la-output.lo `test -f 'output.c' || echo '$(srcdir)/'`output.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-output.Tpo $(DEPDIR)/libsixel_la-output.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='output.c' object='libsixel_la-output.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-output.lo `test -f 'output.c' || echo '$(srcdir)/'`output.c + +libsixel_la-fromsixel.lo: fromsixel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-fromsixel.lo -MD -MP -MF $(DEPDIR)/libsixel_la-fromsixel.Tpo -c -o libsixel_la-fromsixel.lo `test -f 'fromsixel.c' || echo '$(srcdir)/'`fromsixel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-fromsixel.Tpo $(DEPDIR)/libsixel_la-fromsixel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fromsixel.c' object='libsixel_la-fromsixel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-fromsixel.lo `test -f 'fromsixel.c' || echo '$(srcdir)/'`fromsixel.c + +libsixel_la-tosixel.lo: tosixel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-tosixel.lo -MD -MP -MF $(DEPDIR)/libsixel_la-tosixel.Tpo -c -o libsixel_la-tosixel.lo `test -f 'tosixel.c' || echo '$(srcdir)/'`tosixel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-tosixel.Tpo $(DEPDIR)/libsixel_la-tosixel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tosixel.c' object='libsixel_la-tosixel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-tosixel.lo `test -f 'tosixel.c' || echo '$(srcdir)/'`tosixel.c + +libsixel_la-quant.lo: quant.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-quant.lo -MD -MP -MF $(DEPDIR)/libsixel_la-quant.Tpo -c -o libsixel_la-quant.lo `test -f 'quant.c' || echo '$(srcdir)/'`quant.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-quant.Tpo $(DEPDIR)/libsixel_la-quant.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='quant.c' object='libsixel_la-quant.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-quant.lo `test -f 'quant.c' || echo '$(srcdir)/'`quant.c + +libsixel_la-dither.lo: dither.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-dither.lo -MD -MP -MF $(DEPDIR)/libsixel_la-dither.Tpo -c -o libsixel_la-dither.lo `test -f 'dither.c' || echo '$(srcdir)/'`dither.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-dither.Tpo $(DEPDIR)/libsixel_la-dither.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dither.c' object='libsixel_la-dither.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-dither.lo `test -f 'dither.c' || echo '$(srcdir)/'`dither.c + +libsixel_la-frame.lo: frame.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-frame.lo -MD -MP -MF $(DEPDIR)/libsixel_la-frame.Tpo -c -o libsixel_la-frame.lo `test -f 'frame.c' || echo '$(srcdir)/'`frame.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-frame.Tpo $(DEPDIR)/libsixel_la-frame.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='frame.c' object='libsixel_la-frame.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-frame.lo `test -f 'frame.c' || echo '$(srcdir)/'`frame.c + +libsixel_la-pixelformat.lo: pixelformat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-pixelformat.lo -MD -MP -MF $(DEPDIR)/libsixel_la-pixelformat.Tpo -c -o libsixel_la-pixelformat.lo `test -f 'pixelformat.c' || echo '$(srcdir)/'`pixelformat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-pixelformat.Tpo $(DEPDIR)/libsixel_la-pixelformat.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixelformat.c' object='libsixel_la-pixelformat.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-pixelformat.lo `test -f 'pixelformat.c' || echo '$(srcdir)/'`pixelformat.c + +libsixel_la-scale.lo: scale.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-scale.lo -MD -MP -MF $(DEPDIR)/libsixel_la-scale.Tpo -c -o libsixel_la-scale.lo `test -f 'scale.c' || echo '$(srcdir)/'`scale.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-scale.Tpo $(DEPDIR)/libsixel_la-scale.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='scale.c' object='libsixel_la-scale.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-scale.lo `test -f 'scale.c' || echo '$(srcdir)/'`scale.c + +libsixel_la-chunk.lo: chunk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-chunk.lo -MD -MP -MF $(DEPDIR)/libsixel_la-chunk.Tpo -c -o libsixel_la-chunk.lo `test -f 'chunk.c' || echo '$(srcdir)/'`chunk.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-chunk.Tpo $(DEPDIR)/libsixel_la-chunk.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='chunk.c' object='libsixel_la-chunk.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-chunk.lo `test -f 'chunk.c' || echo '$(srcdir)/'`chunk.c + +libsixel_la-loader.lo: loader.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-loader.lo -MD -MP -MF $(DEPDIR)/libsixel_la-loader.Tpo -c -o libsixel_la-loader.lo `test -f 'loader.c' || echo '$(srcdir)/'`loader.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-loader.Tpo $(DEPDIR)/libsixel_la-loader.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loader.c' object='libsixel_la-loader.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-loader.lo `test -f 'loader.c' || echo '$(srcdir)/'`loader.c + +libsixel_la-frompnm.lo: frompnm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-frompnm.lo -MD -MP -MF $(DEPDIR)/libsixel_la-frompnm.Tpo -c -o libsixel_la-frompnm.lo `test -f 'frompnm.c' || echo '$(srcdir)/'`frompnm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-frompnm.Tpo $(DEPDIR)/libsixel_la-frompnm.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='frompnm.c' object='libsixel_la-frompnm.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-frompnm.lo `test -f 'frompnm.c' || echo '$(srcdir)/'`frompnm.c + +libsixel_la-fromgif.lo: fromgif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-fromgif.lo -MD -MP -MF $(DEPDIR)/libsixel_la-fromgif.Tpo -c -o libsixel_la-fromgif.lo `test -f 'fromgif.c' || echo '$(srcdir)/'`fromgif.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-fromgif.Tpo $(DEPDIR)/libsixel_la-fromgif.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fromgif.c' object='libsixel_la-fromgif.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-fromgif.lo `test -f 'fromgif.c' || echo '$(srcdir)/'`fromgif.c + +libsixel_la-encoder.lo: encoder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-encoder.lo -MD -MP -MF $(DEPDIR)/libsixel_la-encoder.Tpo -c -o libsixel_la-encoder.lo `test -f 'encoder.c' || echo '$(srcdir)/'`encoder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-encoder.Tpo $(DEPDIR)/libsixel_la-encoder.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encoder.c' object='libsixel_la-encoder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-encoder.lo `test -f 'encoder.c' || echo '$(srcdir)/'`encoder.c + +libsixel_la-decoder.lo: decoder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-decoder.lo -MD -MP -MF $(DEPDIR)/libsixel_la-decoder.Tpo -c -o libsixel_la-decoder.lo `test -f 'decoder.c' || echo '$(srcdir)/'`decoder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-decoder.Tpo $(DEPDIR)/libsixel_la-decoder.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='decoder.c' object='libsixel_la-decoder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-decoder.lo `test -f 'decoder.c' || echo '$(srcdir)/'`decoder.c + +libsixel_la-writer.lo: writer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-writer.lo -MD -MP -MF $(DEPDIR)/libsixel_la-writer.Tpo -c -o libsixel_la-writer.lo `test -f 'writer.c' || echo '$(srcdir)/'`writer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-writer.Tpo $(DEPDIR)/libsixel_la-writer.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='writer.c' object='libsixel_la-writer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-writer.lo `test -f 'writer.c' || echo '$(srcdir)/'`writer.c + +libsixel_la-stb_image_write.lo: stb_image_write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-stb_image_write.lo -MD -MP -MF $(DEPDIR)/libsixel_la-stb_image_write.Tpo -c -o libsixel_la-stb_image_write.lo `test -f 'stb_image_write.c' || echo '$(srcdir)/'`stb_image_write.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-stb_image_write.Tpo $(DEPDIR)/libsixel_la-stb_image_write.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stb_image_write.c' object='libsixel_la-stb_image_write.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-stb_image_write.lo `test -f 'stb_image_write.c' || echo '$(srcdir)/'`stb_image_write.c + +libsixel_la-status.lo: status.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-status.lo -MD -MP -MF $(DEPDIR)/libsixel_la-status.Tpo -c -o libsixel_la-status.lo `test -f 'status.c' || echo '$(srcdir)/'`status.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-status.Tpo $(DEPDIR)/libsixel_la-status.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='status.c' object='libsixel_la-status.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-status.lo `test -f 'status.c' || echo '$(srcdir)/'`status.c + +libsixel_la-malloc_stub.lo: malloc_stub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-malloc_stub.lo -MD -MP -MF $(DEPDIR)/libsixel_la-malloc_stub.Tpo -c -o libsixel_la-malloc_stub.lo `test -f 'malloc_stub.c' || echo '$(srcdir)/'`malloc_stub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-malloc_stub.Tpo $(DEPDIR)/libsixel_la-malloc_stub.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='malloc_stub.c' object='libsixel_la-malloc_stub.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-malloc_stub.lo `test -f 'malloc_stub.c' || echo '$(srcdir)/'`malloc_stub.c + +libsixel_la-allocator.lo: allocator.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-allocator.lo -MD -MP -MF $(DEPDIR)/libsixel_la-allocator.Tpo -c -o libsixel_la-allocator.lo `test -f 'allocator.c' || echo '$(srcdir)/'`allocator.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-allocator.Tpo $(DEPDIR)/libsixel_la-allocator.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='allocator.c' object='libsixel_la-allocator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-allocator.lo `test -f 'allocator.c' || echo '$(srcdir)/'`allocator.c + +libsixel_la-tty.lo: tty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -MT libsixel_la-tty.lo -MD -MP -MF $(DEPDIR)/libsixel_la-tty.Tpo -c -o libsixel_la-tty.lo `test -f 'tty.c' || echo '$(srcdir)/'`tty.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsixel_la-tty.Tpo $(DEPDIR)/libsixel_la-tty.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tty.c' object='libsixel_la-tty.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsixel_la_CPPFLAGS) $(CPPFLAGS) $(libsixel_la_CFLAGS) $(CFLAGS) -c -o libsixel_la-tty.lo `test -f 'tty.c' || echo '$(srcdir)/'`tty.c + +tests-tests.o: tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -MT tests-tests.o -MD -MP -MF $(DEPDIR)/tests-tests.Tpo -c -o tests-tests.o `test -f 'tests.c' || echo '$(srcdir)/'`tests.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tests-tests.Tpo $(DEPDIR)/tests-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests.c' object='tests-tests.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -c -o tests-tests.o `test -f 'tests.c' || echo '$(srcdir)/'`tests.c + +tests-tests.obj: tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -MT tests-tests.obj -MD -MP -MF $(DEPDIR)/tests-tests.Tpo -c -o tests-tests.obj `if test -f 'tests.c'; then $(CYGPATH_W) 'tests.c'; else $(CYGPATH_W) '$(srcdir)/tests.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tests-tests.Tpo $(DEPDIR)/tests-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests.c' object='tests-tests.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_CPPFLAGS) $(CPPFLAGS) $(tests_CFLAGS) $(CFLAGS) -c -o tests-tests.obj `if test -f 'tests.c'; then $(CYGPATH_W) 'tests.c'; else $(CYGPATH_W) '$(srcdir)/tests.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man5: $(dist_man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS)'; \ + test -n "$(man5dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.5[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ + done; } + +uninstall-man5: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.5[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(MANS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man5dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/libsixel_la-allocator.Plo + -rm -f ./$(DEPDIR)/libsixel_la-chunk.Plo + -rm -f ./$(DEPDIR)/libsixel_la-decoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-dither.Plo + -rm -f ./$(DEPDIR)/libsixel_la-encoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frame.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromgif.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frompnm.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromsixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-loader.Plo + -rm -f ./$(DEPDIR)/libsixel_la-malloc_stub.Plo + -rm -f ./$(DEPDIR)/libsixel_la-output.Plo + -rm -f ./$(DEPDIR)/libsixel_la-pixelformat.Plo + -rm -f ./$(DEPDIR)/libsixel_la-quant.Plo + -rm -f ./$(DEPDIR)/libsixel_la-scale.Plo + -rm -f ./$(DEPDIR)/libsixel_la-status.Plo + -rm -f ./$(DEPDIR)/libsixel_la-stb_image_write.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tosixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tty.Plo + -rm -f ./$(DEPDIR)/libsixel_la-writer.Plo + -rm -f ./$(DEPDIR)/tests-tests.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man5 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/libsixel_la-allocator.Plo + -rm -f ./$(DEPDIR)/libsixel_la-chunk.Plo + -rm -f ./$(DEPDIR)/libsixel_la-decoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-dither.Plo + -rm -f ./$(DEPDIR)/libsixel_la-encoder.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frame.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromgif.Plo + -rm -f ./$(DEPDIR)/libsixel_la-frompnm.Plo + -rm -f ./$(DEPDIR)/libsixel_la-fromsixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-loader.Plo + -rm -f ./$(DEPDIR)/libsixel_la-malloc_stub.Plo + -rm -f ./$(DEPDIR)/libsixel_la-output.Plo + -rm -f ./$(DEPDIR)/libsixel_la-pixelformat.Plo + -rm -f ./$(DEPDIR)/libsixel_la-quant.Plo + -rm -f ./$(DEPDIR)/libsixel_la-scale.Plo + -rm -f ./$(DEPDIR)/libsixel_la-status.Plo + -rm -f ./$(DEPDIR)/libsixel_la-stb_image_write.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tosixel.Plo + -rm -f ./$(DEPDIR)/libsixel_la-tty.Plo + -rm -f ./$(DEPDIR)/libsixel_la-writer.Plo + -rm -f ./$(DEPDIR)/tests-tests.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-man + +uninstall-man: uninstall-man5 + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-man5 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ + uninstall-man uninstall-man5 + +.PRECIOUS: Makefile + + +unittest: all +@COND_TESTS_TRUE@ $(srcdir)/tests + +gen-rgblookup: $(srcdir)/rgblookup.gperf + gperf -C -N lookup_rgb --ignore-case $< |\ + sed 's/{""}/\{"", 0, 0, 0\}/g' |\ + astyle > $(srcdir)/rgblookup.h + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/ThirdParty/libsixel/src/allocator.c b/ThirdParty/libsixel/src/allocator.c new file mode 100644 index 0000000000..c959b54db4 --- /dev/null +++ b/ThirdParty/libsixel/src/allocator.c @@ -0,0 +1,379 @@ +/* + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +#endif /* STDC_HEADERS */ +#if HAVE_ASSERT_H +# include +#endif /* HAVE_ASSERT_H */ +#if HAVE_SYS_TYPES_H +# include +#endif /* HAVE_SYS_TYPES_H */ +#if HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#if HAVE_MEMORY_H +# include +#endif /* HAVE_MEMORY_H */ + +#include "allocator.h" +#include "malloc_stub.h" + +/* create allocator object */ +SIXELSTATUS +sixel_allocator_new( + sixel_allocator_t /* out */ **ppallocator, /* allocator object to be created */ + sixel_malloc_t /* in */ fn_malloc, /* custom malloc() function */ + sixel_calloc_t /* in */ fn_calloc, /* custom calloc() function */ + sixel_realloc_t /* in */ fn_realloc, /* custom realloc() function */ + sixel_free_t /* in */ fn_free) /* custom free() function */ +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (ppallocator == NULL) { + sixel_helper_set_additional_message( + "sixel_allocator_new: given argument ppallocator is null."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + if (fn_malloc == NULL) { + fn_malloc = malloc; + } + + if (fn_calloc == NULL) { + fn_calloc = calloc; + } + + if (fn_realloc == NULL) { + fn_realloc = realloc; + } + + if (fn_free == NULL) { + fn_free = free; + } + + *ppallocator = fn_malloc(sizeof(sixel_allocator_t)); + if (*ppallocator == NULL) { + sixel_helper_set_additional_message( + "sixel_allocator_new: fn_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + (*ppallocator)->ref = 1; + (*ppallocator)->fn_malloc = fn_malloc; + (*ppallocator)->fn_calloc = fn_calloc; + (*ppallocator)->fn_realloc = fn_realloc; + (*ppallocator)->fn_free = fn_free; + + status = SIXEL_OK; + +end: + return status; +} + + +/* destruct allocator object */ +static void +sixel_allocator_destroy( + sixel_allocator_t /* in */ *allocator) /* allocator object to + be destroyed */ +{ + /* precondition */ + assert(allocator); + assert(allocator->fn_free); + + allocator->fn_free(allocator); +} + + +/* increase reference count of allocatort object (thread-unsafe) */ +SIXELAPI void +sixel_allocator_ref( + sixel_allocator_t /* in */ *allocator) /* allocator object to be + increment reference counter */ +{ + /* precondition */ + assert(allocator); + + /* TODO: be thread safe */ + ++allocator->ref; +} + + +/* decrease reference count of output context object (thread-unsafe) */ +SIXELAPI void +sixel_allocator_unref( + sixel_allocator_t /* in */ *allocator) /* allocator object to be unreference */ +{ + /* TODO: be thread safe */ + if (allocator) { + assert(allocator->ref > 0); + --allocator->ref; + if (allocator->ref == 0) { + sixel_allocator_destroy(allocator); + } + } +} + + +/* call custom malloc() */ +SIXELAPI void * +sixel_allocator_malloc( + sixel_allocator_t /* in */ *allocator, /* allocator object */ + size_t /* in */ n) /* allocation size */ +{ + /* precondition */ + assert(allocator); + assert(allocator->fn_malloc); + + if (n == 0) { + sixel_helper_set_additional_message( + "sixel_allocator_malloc: called with n == 0"); + return NULL; + } + + if (n > SIXEL_ALLOCATE_BYTES_MAX) { + return NULL; + } + + return allocator->fn_malloc(n); +} + + +/* call custom calloc() */ +SIXELAPI void * +sixel_allocator_calloc( + sixel_allocator_t /* in */ *allocator, /* allocator object */ + size_t /* in */ nelm, /* number of elements */ + size_t /* in */ elsize) /* size of element */ +{ + size_t n; + + /* precondition */ + assert(allocator); + assert(allocator->fn_calloc); + + n = nelm * elsize; + + if (n == 0) { + sixel_helper_set_additional_message( + "sixel_allocator_malloc: called with n == 0"); + return NULL; + } + + if (n > SIXEL_ALLOCATE_BYTES_MAX) { + return NULL; + } + + return allocator->fn_calloc(nelm, elsize); +} + + +/* call custom realloc() */ +SIXELAPI void * +sixel_allocator_realloc( + sixel_allocator_t /* in */ *allocator, /* allocator object */ + void /* in */ *p, /* existing buffer to be re-allocated */ + size_t /* in */ n) /* re-allocation size */ +{ + /* precondition */ + assert(allocator); + assert(allocator->fn_realloc); + + if (n == 0) { + sixel_helper_set_additional_message( + "sixel_allocator_malloc: called with n == 0"); + return NULL; + } + + if (n > SIXEL_ALLOCATE_BYTES_MAX) { + return NULL; + } + + return allocator->fn_realloc(p, n); +} + + +/* call custom free() */ +SIXELAPI void +sixel_allocator_free( + sixel_allocator_t /* in */ *allocator, /* allocator object */ + void /* in */ *p) /* existing buffer to be freed */ +{ + /* precondition */ + assert(allocator); + assert(allocator->fn_free); + + allocator->fn_free(p); +} + + +#if HAVE_TESTS +volatile int sixel_debug_malloc_counter; + +void * +sixel_bad_malloc(size_t size) +{ + return sixel_debug_malloc_counter-- == 0 ? NULL: malloc(size); +} + + +void * +sixel_bad_calloc(size_t count, size_t size) +{ + (void) count; + (void) size; + + return NULL; +} + + +void * +sixel_bad_realloc(void *ptr, size_t size) +{ + (void) ptr; + (void) size; + + return NULL; +} +#endif /* HAVE_TESTS */ + +#if 0 +int +rpl_posix_memalign(void **memptr, size_t alignment, size_t size) +{ +#if HAVE_POSIX_MEMALIGN + return posix_memalign(memptr, alignment, size); +#elif HAVE_ALIGNED_ALLOC + *memptr = aligned_alloc(alignment, size); + return *memptr ? 0: ENOMEM; +#elif HAVE_MEMALIGN + *memptr = memalign(alignment, size); + return *memptr ? 0: ENOMEM; +#elif HAVE__ALIGNED_MALLOC + return _aligned_malloc(size, alignment); +#else +# error +#endif /* _MSC_VER */ +} +#endif + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + sixel_allocator_t *allocator = NULL; + + status = sixel_allocator_new(NULL, malloc, calloc, realloc, free); + if (status != SIXEL_BAD_ARGUMENT) { + goto error; + } + + status = sixel_allocator_new(&allocator, NULL, calloc, realloc, free); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_allocator_new(&allocator, malloc, NULL, realloc, free); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_allocator_new(&allocator, malloc, calloc, NULL, free); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_allocator_new(&allocator, malloc, calloc, realloc, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test2(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + sixel_allocator_t *allocator = NULL; + + sixel_debug_malloc_counter = 1; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, calloc, realloc, free); + if (status == SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +SIXELAPI int +sixel_allocator_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2 + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/allocator.h b/ThirdParty/libsixel/src/allocator.h new file mode 100644 index 0000000000..c18da4b366 --- /dev/null +++ b/ThirdParty/libsixel/src/allocator.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_ALLOCATOR_H +#define LIBSIXEL_ALLOCATOR_H + +#include + +struct sixel_allocator { + unsigned int ref; /* reference counter */ + sixel_malloc_t fn_malloc; + sixel_calloc_t fn_calloc; + sixel_realloc_t fn_realloc; + sixel_free_t fn_free; +}; + +#if HAVE_TESTS +int +sixel_allocator_tests_main(void); +#endif + +#endif /* LIBSIXEL_ALLOCATOR_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/chunk.c b/ThirdParty/libsixel/src/chunk.c new file mode 100644 index 0000000000..970e0bf1fd --- /dev/null +++ b/ThirdParty/libsixel/src/chunk.c @@ -0,0 +1,621 @@ +/* + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_SYS_TYPES_H +# include +#endif /* HAVE_SYS_TYPES_H */ +#if HAVE_SYS_STAT_H +# include +#endif /* HAVE_SYS_STAT_H */ +#if HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if HAVE_FCNTL_H +# include +#endif /* HAVE_FCNTL_H */ +#if HAVE_IO_H +# include +#endif /* HAVE_IO_H */ +#ifdef HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#ifdef HAVE_LIBCURL +# include +#endif /* HAVE_LIBCURL */ +#if HAVE_SYS_SELECT_H +# include +#endif /* HAVE_SYS_SELECT_H */ + +#if !defined(HAVE_MEMCPY) +# define memcpy(d, s, n) (bcopy ((s), (d), (n))) +#endif + +#if !defined(HAVE_MEMMOVE) +# define memmove(d, s, n) (bcopy ((s), (d), (n))) +#endif + +#if !defined(O_BINARY) && defined(_O_BINARY) +# define O_BINARY _O_BINARY +#endif /* !defined(O_BINARY) && !defined(_O_BINARY) */ + +#include "chunk.h" +#include "allocator.h" + + +/* initialize chunk object with specified size */ +static SIXELSTATUS +sixel_chunk_init( + sixel_chunk_t * const /* in */ pchunk, + size_t /* in */ initial_size) +{ + SIXELSTATUS status = SIXEL_FALSE; + + pchunk->max_size = initial_size; + pchunk->size = 0; + pchunk->buffer + = (unsigned char *)sixel_allocator_malloc(pchunk->allocator, pchunk->max_size); + + if (pchunk->buffer == NULL) { + sixel_helper_set_additional_message( + "sixel_chunk_init: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +void +sixel_chunk_destroy( + sixel_chunk_t * const /* in */ pchunk) +{ + sixel_allocator_t *allocator; + + if (pchunk) { + allocator = pchunk->allocator; + sixel_allocator_free(allocator, pchunk->buffer); + sixel_allocator_free(allocator, pchunk); + sixel_allocator_unref(allocator); + } +} + + +# ifdef HAVE_LIBCURL +static size_t +memory_write(void /* in */ *ptr, + size_t /* in */ size, + size_t /* in */ len, + void /* in */ *memory) +{ + size_t nbytes = 0; + sixel_chunk_t *chunk; + + if (ptr == NULL || memory == NULL) { + goto end; + } + + chunk = (sixel_chunk_t *)memory; + if (chunk->buffer == NULL) { + goto end; + } + + nbytes = size * len; + if (nbytes == 0) { + goto end; + } + + if (chunk->max_size <= chunk->size + nbytes) { + do { + chunk->max_size *= 2; + } while (chunk->max_size <= chunk->size + nbytes); + chunk->buffer = (unsigned char*)sixel_allocator_realloc(chunk->allocator, + chunk->buffer, + chunk->max_size); + if (chunk->buffer == NULL) { + nbytes = 0; + goto end; + } + } + + memcpy(chunk->buffer + chunk->size, ptr, nbytes); + chunk->size += nbytes; + +end: + return nbytes; +} +# endif + + +#if HAVE_DIAGNOSTIC_SIGN_CONVERSION +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-conversion" +#endif +static int +wait_file(int fd, int usec) +{ + int ret = 1; +#if HAVE_SYS_SELECT_H + fd_set rfds; + struct timeval tv; + + tv.tv_sec = usec / 1000000; + tv.tv_usec = usec % 1000000; + FD_ZERO(&rfds); + FD_SET(fd, &rfds); + ret = select(fd + 1, &rfds, NULL, NULL, &tv); +#else + (void) fd; + (void) usec; +#endif /* HAVE_SYS_SELECT_H */ + if (ret == 0) { + return (1); + } + if (ret < 0) { + return ret; + } + + return (0); +} +#if HAVE_DIAGNOSTIC_SIGN_CONVERSION +# pragma GCC diagnostic pop +#endif + + +static SIXELSTATUS +open_binary_file( + FILE /* out */ **f, + char const /* in */ *filename) +{ + SIXELSTATUS status = SIXEL_FALSE; +#if HAVE_STAT + struct stat sb; +#endif /* HAVE_STAT */ + + if (filename == NULL || strcmp(filename, "-") == 0) { + /* for windows */ +#if defined(O_BINARY) +# if HAVE__SETMODE + _setmode(fileno(stdin), O_BINARY); +# elif HAVE_SETMODE + setmode(fileno(stdin), O_BINARY); +# endif /* HAVE_SETMODE */ +#endif /* defined(O_BINARY) */ + *f = stdin; + + status = SIXEL_OK; + goto end; + } + +#if HAVE_STAT + if (stat(filename, &sb) != 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message("stat() failed."); + goto end; + } + if (S_ISDIR(sb.st_mode)) { + status = SIXEL_BAD_INPUT; + sixel_helper_set_additional_message("specified path is directory."); + goto end; + } +#endif /* HAVE_STAT */ + + *f = fopen(filename, "rb"); + if (!*f) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message("fopen() failed."); + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +/* get chunk date from specified local file path */ +static SIXELSTATUS +sixel_chunk_from_file( + char const /* in */ *filename, + sixel_chunk_t /* in */ *pchunk, + int const /* in */ *cancel_flag +) +{ + SIXELSTATUS status = SIXEL_FALSE; + int ret; + FILE *f = NULL; + size_t n; + size_t const bucket_size = 4096; + + status = open_binary_file(&f, filename); + if (SIXEL_FAILED(status) || f == NULL) { + goto end; + } + + for (;;) { + if (pchunk->max_size - pchunk->size < bucket_size) { + pchunk->max_size *= 2; + pchunk->buffer = (unsigned char *)sixel_allocator_realloc(pchunk->allocator, + pchunk->buffer, + pchunk->max_size); + if (pchunk->buffer == NULL) { + sixel_helper_set_additional_message( + "sixel_chunk_from_file: sixel_allocator_realloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + } + + if (isatty(fileno(f))) { + for (;;) { + if (*cancel_flag) { + status = SIXEL_INTERRUPTED; + goto end; + } + ret = wait_file(fileno(f), 10000); + if (ret < 0) { + sixel_helper_set_additional_message( + "sixel_chunk_from_file: wait_file() failed."); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + if (ret == 0) { + break; + } + } + } + n = fread(pchunk->buffer + pchunk->size, 1, 4096, f); + if (n == 0) { + break; + } + pchunk->size += n; + } + + if (f != stdin) { + fclose(f); + } + + status = SIXEL_OK; + +end: + return status; +} + + +/* get chunk of specified resource over libcurl function */ +static SIXELSTATUS +sixel_chunk_from_url( + char const /* in */ *url, + sixel_chunk_t /* in */ *pchunk, + int /* in */ finsecure) +{ + SIXELSTATUS status = SIXEL_FALSE; +# ifdef HAVE_LIBCURL + CURL *curl = NULL; + CURLcode code; + + curl = curl_easy_init(); + if (curl == NULL) { + status = SIXEL_CURL_ERROR & CURLE_FAILED_INIT; + sixel_helper_set_additional_message("curl_easy_init() failed."); + goto end; + } + + code = curl_easy_setopt(curl, CURLOPT_URL, url); + if (code != CURLE_OK) { + status = SIXEL_CURL_ERROR & (code & 0xff); + sixel_helper_set_additional_message("curl_easy_setopt(CURLOPT_FOLLOWLOCATION) failed."); + goto end; + } + + code = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + if (code != CURLE_OK) { + status = SIXEL_CURL_ERROR & (code & 0xff); + sixel_helper_set_additional_message("curl_easy_setopt(CURLOPT_FOLLOWLOCATION) failed."); + goto end; + } + + if (finsecure && strncmp(url, "https://", 8) == 0) { + code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + if (code != CURLE_OK) { + status = SIXEL_CURL_ERROR & (code & 0xff); + sixel_helper_set_additional_message("curl_easy_setopt(CURLOPT_SSL_VERIFYPEER) failed."); + goto end; + } + + code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + if (code != CURLE_OK) { + status = SIXEL_CURL_ERROR & (code & 0xff); + sixel_helper_set_additional_message("curl_easy_setopt(CURLOPT_SSL_VERIFYHOST) failed."); + goto end; + } + + } + + code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, memory_write); + if (code != CURLE_OK) { + status = SIXEL_CURL_ERROR & (code & 0xff); + sixel_helper_set_additional_message("curl_easy_setopt(CURLOPT_WRITEFUNCTION) failed."); + goto end; + } + + code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)pchunk); + if (code != CURLE_OK) { + status = SIXEL_CURL_ERROR & (code & 0xff); + sixel_helper_set_additional_message("curl_easy_setopt(CURLOPT_WRITEDATA) failed."); + goto end; + } + + code = curl_easy_perform(curl); + if (code != CURLE_OK) { + status = SIXEL_CURL_ERROR & (code & 0xff); + sixel_helper_set_additional_message("curl_easy_perform() failed."); + goto end; + } + + status = SIXEL_OK; +# else + (void) url; + (void) pchunk; + (void) finsecure; + sixel_helper_set_additional_message( + "To specify URI schemes, you have to " + "configure this program with --with-libcurl " + "option at compile time.\n"); + status = SIXEL_NOT_IMPLEMENTED; + goto end; +# endif /* HAVE_LIBCURL */ + +end: +# ifdef HAVE_LIBCURL + if (curl) { + curl_easy_cleanup(curl); + } +# endif /* HAVE_LIBCURL */ + return status; +} + + +SIXELSTATUS +sixel_chunk_new( + sixel_chunk_t /* out */ **ppchunk, + char const /* in */ *filename, + int /* in */ finsecure, + int const /* in */ *cancel_flag, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (ppchunk == NULL) { + sixel_helper_set_additional_message( + "sixel_chunk_new: ppchunk is null."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + if (allocator == NULL) { + sixel_helper_set_additional_message( + "sixel_chunk_new: allocator is null."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + *ppchunk = (sixel_chunk_t *)sixel_allocator_malloc(allocator, sizeof(sixel_chunk_t)); + if (*ppchunk == NULL) { + sixel_helper_set_additional_message( + "sixel_chunk_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + /* set allocator to chunk object */ + (*ppchunk)->allocator = allocator; + + status = sixel_chunk_init(*ppchunk, 1024 * 32); + if (SIXEL_FAILED(status)) { + sixel_allocator_free(allocator, *ppchunk); + *ppchunk = NULL; + goto end; + } + + sixel_allocator_ref(allocator); + + if (filename != NULL && strstr(filename, "://")) { + status = sixel_chunk_from_url(filename, *ppchunk, finsecure); + } else { + status = sixel_chunk_from_file(filename, *ppchunk, cancel_flag); + } + if (SIXEL_FAILED(status)) { + sixel_chunk_destroy(*ppchunk); + *ppchunk = NULL; + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + unsigned char *ptr = malloc(16); + +#ifdef HAVE_LIBCURL + sixel_chunk_t chunk = {0, 0, 0, NULL}; + int nread; + + nread = memory_write(NULL, 1, 1, NULL); + if (nread != 0) { + goto error; + } + + nread = memory_write(ptr, 1, 1, &chunk); + if (nread != 0) { + goto error; + } + + nread = memory_write(ptr, 0, 1, &chunk); + if (nread != 0) { + goto error; + } +#else + nret = EXIT_SUCCESS; + goto error; +#endif /* HAVE_LIBCURL */ + nret = EXIT_SUCCESS; + +error: + free(ptr); + return nret; +} + + +static int +test2(void) +{ + int nret = EXIT_FAILURE; + sixel_chunk_t *chunk = NULL; + SIXELSTATUS status = SIXEL_FALSE; + + status = sixel_chunk_new(&chunk, NULL, 0, NULL, NULL); + if (status != SIXEL_BAD_ARGUMENT) { + goto error; + } + + status = sixel_chunk_new(NULL, NULL, 0, NULL, NULL); + if (status != SIXEL_BAD_ARGUMENT) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test3(void) +{ + int nret = EXIT_FAILURE; + sixel_chunk_t *chunk; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status = SIXEL_FALSE; + + sixel_debug_malloc_counter = 1; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_chunk_new(&chunk, "../images/map8.six", 0, NULL, allocator); + if (status != SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test4(void) +{ + int nret = EXIT_FAILURE; + sixel_chunk_t *chunk; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status = SIXEL_FALSE; + + sixel_debug_malloc_counter = 2; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + status = sixel_chunk_new(&chunk, "../images/map8.six", 0, NULL, allocator); + if (status != SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +SIXELAPI int +sixel_chunk_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + test3, + test4, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/chunk.h b/ThirdParty/libsixel/src/chunk.h new file mode 100644 index 0000000000..8dad901a61 --- /dev/null +++ b/ThirdParty/libsixel/src/chunk.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_CHUNK_H +#define LIBSIXEL_CHUNK_H + +#include + +/* chunk object */ +typedef struct sixel_chunk +{ + unsigned char *buffer; + size_t size; + size_t max_size; + sixel_allocator_t *allocator; +} sixel_chunk_t; + +#ifdef __cplusplus +extern "C" { +#endif + +SIXELSTATUS +sixel_chunk_new( + sixel_chunk_t /* out */ **ppchunk, + char const /* in */ *filename, + int /* in */ finsecure, + int const /* in */ *cancel_flag, + sixel_allocator_t /* in */ *allocator); + + +void +sixel_chunk_destroy( + sixel_chunk_t * const /* in */ pchunk); + + +#if HAVE_TESTS +int +sixel_chunk_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_CHUNK_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/decoder.c b/ThirdParty/libsixel/src/decoder.c new file mode 100644 index 0000000000..6d110759a2 --- /dev/null +++ b/ThirdParty/libsixel/src/decoder.c @@ -0,0 +1,624 @@ +/* + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if HAVE_SYS_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if HAVE_SYS_TYPES_H +#include +#endif /* HAVE_SYS_TYPES_H */ +#if HAVE_SYS_SELECT_H +#include +#endif /* HAVE_SYS_SELECT_H */ +#if HAVE_TIME_H +# include +#endif /* HAVE_TIME_H */ +#if HAVE_SYS_TIME_H +# include +#endif /* HAVE_SYS_TIME_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_INTTYPES_H */ +#if HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#if HAVE_TERMIOS_H +# include +#endif /* HAVE_TERMIOS_H */ +#if HAVE_SYS_IOCTL_H +# include +#endif /* HAVE_SYS_IOCTL_H */ +#if HAVE_IO_H +# include +#endif /* HAVE_IO_H */ + +#include "decoder.h" + + +/* original version of strdup(1) with allocator object */ +static char * +strdup_with_allocator( + char const /* in */ *s, /* source buffer */ + sixel_allocator_t /* in */ *allocator) /* allocator object for + destination buffer */ +{ + char *p; + + p = (char *)sixel_allocator_malloc(allocator, (size_t)(strlen(s) + 1)); + if (p) { + strcpy(p, s); + } + return p; +} + + +/* create decoder object */ +SIXELAPI SIXELSTATUS +sixel_decoder_new( + sixel_decoder_t /* out */ **ppdecoder, /* decoder object to be created */ + sixel_allocator_t /* in */ *allocator) /* allocator, null if you use + default allocator */ +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (allocator == NULL) { + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + } else { + sixel_allocator_ref(allocator); + } + + *ppdecoder = sixel_allocator_malloc(allocator, sizeof(sixel_decoder_t)); + if (*ppdecoder == NULL) { + sixel_allocator_unref(allocator); + sixel_helper_set_additional_message( + "sixel_decoder_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + (*ppdecoder)->ref = 1; + (*ppdecoder)->output = strdup_with_allocator("-", allocator); + (*ppdecoder)->input = strdup_with_allocator("-", allocator); + (*ppdecoder)->allocator = allocator; + + if ((*ppdecoder)->output == NULL || (*ppdecoder)->input == NULL) { + sixel_decoder_unref(*ppdecoder); + *ppdecoder = NULL; + sixel_helper_set_additional_message( + "sixel_decoder_new: strdup_with_allocator() failed."); + status = SIXEL_BAD_ALLOCATION; + sixel_allocator_unref(allocator); + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +/* deprecated version of sixel_decoder_new() */ +SIXELAPI /* deprecated */ sixel_decoder_t * +sixel_decoder_create(void) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_decoder_t *decoder = NULL; + + status = sixel_decoder_new(&decoder, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + return decoder; +} + + +/* destroy a decoder object */ +static void +sixel_decoder_destroy(sixel_decoder_t *decoder) +{ + sixel_allocator_t *allocator; + + if (decoder) { + allocator = decoder->allocator; + sixel_allocator_free(allocator, decoder->input); + sixel_allocator_free(allocator, decoder->output); + sixel_allocator_free(allocator, decoder); + sixel_allocator_unref(allocator); + } +} + + +/* increase reference count of decoder object (thread-unsafe) */ +SIXELAPI void +sixel_decoder_ref(sixel_decoder_t *decoder) +{ + /* TODO: be thread safe */ + ++decoder->ref; +} + + +/* decrease reference count of decoder object (thread-unsafe) */ +SIXELAPI void +sixel_decoder_unref(sixel_decoder_t *decoder) +{ + /* TODO: be thread safe */ + if (decoder != NULL && --decoder->ref == 0) { + sixel_decoder_destroy(decoder); + } +} + + +/* set an option flag to decoder object */ +SIXELAPI SIXELSTATUS +sixel_decoder_setopt( + sixel_decoder_t /* in */ *decoder, + int /* in */ arg, + char const /* in */ *value +) +{ + SIXELSTATUS status = SIXEL_FALSE; + + sixel_decoder_ref(decoder); + + switch(arg) { + case SIXEL_OPTFLAG_INPUT: /* i */ + free(decoder->input); + decoder->input = strdup_with_allocator(value, decoder->allocator); + if (decoder->input == NULL) { + sixel_helper_set_additional_message( + "sixel_decoder_setopt: strdup_with_allocator() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + break; + case SIXEL_OPTFLAG_OUTPUT: /* o */ + free(decoder->output); + decoder->output = strdup_with_allocator(value, decoder->allocator); + if (decoder->output == NULL) { + sixel_helper_set_additional_message( + "sixel_decoder_setopt: strdup_with_allocator() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + break; + case '?': + default: + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + status = SIXEL_OK; + +end: + sixel_decoder_unref(decoder); + + return status; +} + + +/* load source data from stdin or the file specified with + SIXEL_OPTFLAG_INPUT flag, and decode it */ +SIXELAPI SIXELSTATUS +sixel_decoder_decode( + sixel_decoder_t /* in */ *decoder) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char *raw_data = NULL; + int sx; + int sy; + int raw_len; + int max; + int n; + FILE *input_fp = NULL; + unsigned char *indexed_pixels = NULL; + unsigned char *palette = NULL; + int ncolors; + + sixel_decoder_ref(decoder); + + if (strcmp(decoder->input, "-") == 0) { + /* for windows */ +#if defined(O_BINARY) +# if HAVE__SETMODE + _setmode(fileno(stdin), O_BINARY); +# elif HAVE_SETMODE + setmode(fileno(stdin), O_BINARY); +# endif /* HAVE_SETMODE */ +#endif /* defined(O_BINARY) */ + input_fp = stdin; + } else { + input_fp = fopen(decoder->input, "rb"); + if (!input_fp) { + sixel_helper_set_additional_message( + "sixel_decoder_decode: fopen() failed."); + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + goto end; + } + } + + raw_len = 0; + max = 64 * 1024; + + raw_data = (unsigned char *)sixel_allocator_malloc(decoder->allocator, (size_t)max); + if (raw_data == NULL) { + sixel_helper_set_additional_message( + "sixel_decoder_decode: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + for (;;) { + if ((max - raw_len) < 4096) { + max *= 2; + raw_data = (unsigned char *)sixel_allocator_realloc(decoder->allocator, raw_data, (size_t)max); + if (raw_data == NULL) { + sixel_helper_set_additional_message( + "sixel_decoder_decode: sixel_allocator_realloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + } + if ((n = (int)fread(raw_data + raw_len, 1, 4096, input_fp)) <= 0) { + break; + } + raw_len += n; + } + + if (input_fp != stdout) { + fclose(input_fp); + } + + status = sixel_decode_raw( + raw_data, + raw_len, + &indexed_pixels, + &sx, + &sy, + &palette, + &ncolors, + decoder->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + if (sx > SIXEL_WIDTH_LIMIT || sy > SIXEL_HEIGHT_LIMIT) { + status = SIXEL_BAD_INPUT; + goto end; + } + + status = sixel_helper_write_image_file(indexed_pixels, sx, sy, palette, + SIXEL_PIXELFORMAT_PAL8, + decoder->output, + SIXEL_FORMAT_PNG, + decoder->allocator); + + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + sixel_allocator_free(decoder->allocator, raw_data); + sixel_allocator_free(decoder->allocator, indexed_pixels); + sixel_allocator_free(decoder->allocator, palette); + sixel_decoder_unref(decoder); + + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + decoder = sixel_decoder_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (decoder == NULL) { + goto error; + } + sixel_decoder_ref(decoder); + sixel_decoder_unref(decoder); + nret = EXIT_SUCCESS; + +error: + sixel_decoder_unref(decoder); + return nret; +} + + +static int +test2(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + SIXELSTATUS status; + + status = sixel_decoder_new(&decoder, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + sixel_decoder_ref(decoder); + sixel_decoder_unref(decoder); + nret = EXIT_SUCCESS; + +error: + sixel_decoder_unref(decoder); + return nret; +} + + +static int +test3(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status; + + sixel_debug_malloc_counter = 1; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_new(&decoder, allocator); + if (status != SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test4(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status; + + sixel_debug_malloc_counter = 2; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_new(&decoder, allocator); + if (status != SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test5(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status; + + sixel_debug_malloc_counter = 4; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + status = sixel_decoder_new(&decoder, allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_setopt(decoder, SIXEL_OPTFLAG_INPUT, "/"); + if (status != SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test6(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status; + + sixel_debug_malloc_counter = 4; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_new(&decoder, allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_setopt(decoder, SIXEL_OPTFLAG_OUTPUT, "/"); + if (status != SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test7(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status; + + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_new(&decoder, allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_setopt(decoder, SIXEL_OPTFLAG_INPUT, "../images/file"); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_decode(decoder); + if ((status >> 8) != (SIXEL_LIBC_ERROR >> 8)) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test8(void) +{ + int nret = EXIT_FAILURE; + sixel_decoder_t *decoder = NULL; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status; + + sixel_debug_malloc_counter = 5; + + status = sixel_allocator_new(&allocator, sixel_bad_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_new(&decoder, allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_setopt(decoder, SIXEL_OPTFLAG_INPUT, "../images/map8.six"); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decoder_decode(decoder); + if (status != SIXEL_BAD_ALLOCATION) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +SIXELAPI int +sixel_decoder_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + test3, + test4, + test5, + test6, + test7, + test8 + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/decoder.h b/ThirdParty/libsixel/src/decoder.h new file mode 100644 index 0000000000..0fc1ae3e98 --- /dev/null +++ b/ThirdParty/libsixel/src/decoder.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_DECODER_H +#define LIBSIXEL_DECODER_H + +#include + +/* encode settings object */ +struct sixel_decoder { + unsigned int ref; + char *input; + char *output; + sixel_allocator_t *allocator; +}; + +#if HAVE_TESTS +int +sixel_decoder_tests_main(void); +#endif + +#endif /* LIBSIXEL_DECODER_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/dither.c b/ThirdParty/libsixel/src/dither.c new file mode 100644 index 0000000000..2f0c3b6455 --- /dev/null +++ b/ThirdParty/libsixel/src/dither.c @@ -0,0 +1,919 @@ +/* + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_MATH_H +# include +#endif /* HAVE_MATH_H */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_LIMITS_H +# include +#endif /* HAVE_LIMITS_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_INTTYPES_H */ + +#include "dither.h" +#include "quant.h" +#include + + +static const unsigned char pal_mono_dark[] = { + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff +}; + + +static const unsigned char pal_mono_light[] = { + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 +}; + +static const unsigned char pal_gray_1bit[] = { + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff +}; + + +static const unsigned char pal_gray_2bit[] = { + 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff +}; + + +static const unsigned char pal_gray_4bit[] = { + 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, + 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, + 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, + 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff +}; + + +static const unsigned char pal_gray_8bit[] = { + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, + 0x0c, 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, + 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, + 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, + 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x1a, 0x1a, 0x1a, 0x1b, 0x1b, 0x1b, + 0x1c, 0x1c, 0x1c, 0x1d, 0x1d, 0x1d, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, + 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, + 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27, + 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, + 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, + 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x33, 0x33, 0x33, + 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x37, 0x37, 0x37, + 0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x3a, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, + 0x3c, 0x3c, 0x3c, 0x3d, 0x3d, 0x3d, 0x3e, 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, + 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, + 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, + 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, + 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4e, 0x4e, 0x4e, 0x4f, 0x4f, 0x4f, + 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, + 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, + 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, + 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, + 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, + 0x64, 0x64, 0x64, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, + 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, + 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, + 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, + 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77, + 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, + 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, + 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, + 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x87, 0x87, 0x87, + 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, + 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, + 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, + 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, + 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, + 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, + 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, + 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, + 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab, 0xab, + 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, + 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, + 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, + 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, + 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, + 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, + 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, + 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, + 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, + 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3, + 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, + 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, + 0xdc, 0xdc, 0xdc, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, + 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, + 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, + 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xeb, 0xeb, 0xeb, + 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, + 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, + 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, + 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, + 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff +}; + + +static const unsigned char pal_xterm256[] = { + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x00, + 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, + 0x80, 0x80, 0x80, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x87, 0x00, 0x00, 0xaf, + 0x00, 0x00, 0xd7, 0x00, 0x00, 0xff, 0x00, 0x5f, 0x00, 0x00, 0x5f, 0x5f, + 0x00, 0x5f, 0x87, 0x00, 0x5f, 0xaf, 0x00, 0x5f, 0xd7, 0x00, 0x5f, 0xff, + 0x00, 0x87, 0x00, 0x00, 0x87, 0x5f, 0x00, 0x87, 0x87, 0x00, 0x87, 0xaf, + 0x00, 0x87, 0xd7, 0x00, 0x87, 0xff, 0x00, 0xaf, 0x00, 0x00, 0xaf, 0x5f, + 0x00, 0xaf, 0x87, 0x00, 0xaf, 0xaf, 0x00, 0xaf, 0xd7, 0x00, 0xaf, 0xff, + 0x00, 0xd7, 0x00, 0x00, 0xd7, 0x5f, 0x00, 0xd7, 0x87, 0x00, 0xd7, 0xaf, + 0x00, 0xd7, 0xd7, 0x00, 0xd7, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5f, + 0x00, 0xff, 0x87, 0x00, 0xff, 0xaf, 0x00, 0xff, 0xd7, 0x00, 0xff, 0xff, + 0x5f, 0x00, 0x00, 0x5f, 0x00, 0x5f, 0x5f, 0x00, 0x87, 0x5f, 0x00, 0xaf, + 0x5f, 0x00, 0xd7, 0x5f, 0x00, 0xff, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x5f, + 0x5f, 0x5f, 0x87, 0x5f, 0x5f, 0xaf, 0x5f, 0x5f, 0xd7, 0x5f, 0x5f, 0xff, + 0x5f, 0x87, 0x00, 0x5f, 0x87, 0x5f, 0x5f, 0x87, 0x87, 0x5f, 0x87, 0xaf, + 0x5f, 0x87, 0xd7, 0x5f, 0x87, 0xff, 0x5f, 0xaf, 0x00, 0x5f, 0xaf, 0x5f, + 0x5f, 0xaf, 0x87, 0x5f, 0xaf, 0xaf, 0x5f, 0xaf, 0xd7, 0x5f, 0xaf, 0xff, + 0x5f, 0xd7, 0x00, 0x5f, 0xd7, 0x5f, 0x5f, 0xd7, 0x87, 0x5f, 0xd7, 0xaf, + 0x5f, 0xd7, 0xd7, 0x5f, 0xd7, 0xff, 0x5f, 0xff, 0x00, 0x5f, 0xff, 0x5f, + 0x5f, 0xff, 0x87, 0x5f, 0xff, 0xaf, 0x5f, 0xff, 0xd7, 0x5f, 0xff, 0xff, + 0x87, 0x00, 0x00, 0x87, 0x00, 0x5f, 0x87, 0x00, 0x87, 0x87, 0x00, 0xaf, + 0x87, 0x00, 0xd7, 0x87, 0x00, 0xff, 0x87, 0x5f, 0x00, 0x87, 0x5f, 0x5f, + 0x87, 0x5f, 0x87, 0x87, 0x5f, 0xaf, 0x87, 0x5f, 0xd7, 0x87, 0x5f, 0xff, + 0x87, 0x87, 0x00, 0x87, 0x87, 0x5f, 0x87, 0x87, 0x87, 0x87, 0x87, 0xaf, + 0x87, 0x87, 0xd7, 0x87, 0x87, 0xff, 0x87, 0xaf, 0x00, 0x87, 0xaf, 0x5f, + 0x87, 0xaf, 0x87, 0x87, 0xaf, 0xaf, 0x87, 0xaf, 0xd7, 0x87, 0xaf, 0xff, + 0x87, 0xd7, 0x00, 0x87, 0xd7, 0x5f, 0x87, 0xd7, 0x87, 0x87, 0xd7, 0xaf, + 0x87, 0xd7, 0xd7, 0x87, 0xd7, 0xff, 0x87, 0xff, 0x00, 0x87, 0xff, 0x5f, + 0x87, 0xff, 0x87, 0x87, 0xff, 0xaf, 0x87, 0xff, 0xd7, 0x87, 0xff, 0xff, + 0xaf, 0x00, 0x00, 0xaf, 0x00, 0x5f, 0xaf, 0x00, 0x87, 0xaf, 0x00, 0xaf, + 0xaf, 0x00, 0xd7, 0xaf, 0x00, 0xff, 0xaf, 0x5f, 0x00, 0xaf, 0x5f, 0x5f, + 0xaf, 0x5f, 0x87, 0xaf, 0x5f, 0xaf, 0xaf, 0x5f, 0xd7, 0xaf, 0x5f, 0xff, + 0xaf, 0x87, 0x00, 0xaf, 0x87, 0x5f, 0xaf, 0x87, 0x87, 0xaf, 0x87, 0xaf, + 0xaf, 0x87, 0xd7, 0xaf, 0x87, 0xff, 0xaf, 0xaf, 0x00, 0xaf, 0xaf, 0x5f, + 0xaf, 0xaf, 0x87, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xd7, 0xaf, 0xaf, 0xff, + 0xaf, 0xd7, 0x00, 0xaf, 0xd7, 0x5f, 0xaf, 0xd7, 0x87, 0xaf, 0xd7, 0xaf, + 0xaf, 0xd7, 0xd7, 0xaf, 0xd7, 0xff, 0xaf, 0xff, 0x00, 0xaf, 0xff, 0x5f, + 0xaf, 0xff, 0x87, 0xaf, 0xff, 0xaf, 0xaf, 0xff, 0xd7, 0xaf, 0xff, 0xff, + 0xd7, 0x00, 0x00, 0xd7, 0x00, 0x5f, 0xd7, 0x00, 0x87, 0xd7, 0x00, 0xaf, + 0xd7, 0x00, 0xd7, 0xd7, 0x00, 0xff, 0xd7, 0x5f, 0x00, 0xd7, 0x5f, 0x5f, + 0xd7, 0x5f, 0x87, 0xd7, 0x5f, 0xaf, 0xd7, 0x5f, 0xd7, 0xd7, 0x5f, 0xff, + 0xd7, 0x87, 0x00, 0xd7, 0x87, 0x5f, 0xd7, 0x87, 0x87, 0xd7, 0x87, 0xaf, + 0xd7, 0x87, 0xd7, 0xd7, 0x87, 0xff, 0xd7, 0xaf, 0x00, 0xd7, 0xaf, 0x5f, + 0xd7, 0xaf, 0x87, 0xd7, 0xaf, 0xaf, 0xd7, 0xaf, 0xd7, 0xd7, 0xaf, 0xff, + 0xd7, 0xd7, 0x00, 0xd7, 0xd7, 0x5f, 0xd7, 0xd7, 0x87, 0xd7, 0xd7, 0xaf, + 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xff, 0x00, 0xd7, 0xff, 0x5f, + 0xd7, 0xff, 0x87, 0xd7, 0xff, 0xaf, 0xd7, 0xff, 0xd7, 0xd7, 0xff, 0xff, + 0xff, 0x00, 0x00, 0xff, 0x00, 0x5f, 0xff, 0x00, 0x87, 0xff, 0x00, 0xaf, + 0xff, 0x00, 0xd7, 0xff, 0x00, 0xff, 0xff, 0x5f, 0x00, 0xff, 0x5f, 0x5f, + 0xff, 0x5f, 0x87, 0xff, 0x5f, 0xaf, 0xff, 0x5f, 0xd7, 0xff, 0x5f, 0xff, + 0xff, 0x87, 0x00, 0xff, 0x87, 0x5f, 0xff, 0x87, 0x87, 0xff, 0x87, 0xaf, + 0xff, 0x87, 0xd7, 0xff, 0x87, 0xff, 0xff, 0xaf, 0x00, 0xff, 0xaf, 0x5f, + 0xff, 0xaf, 0x87, 0xff, 0xaf, 0xaf, 0xff, 0xaf, 0xd7, 0xff, 0xaf, 0xff, + 0xff, 0xd7, 0x00, 0xff, 0xd7, 0x5f, 0xff, 0xd7, 0x87, 0xff, 0xd7, 0xaf, + 0xff, 0xd7, 0xd7, 0xff, 0xd7, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x5f, + 0xff, 0xff, 0x87, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xd7, 0xff, 0xff, 0xff, + 0x08, 0x08, 0x08, 0x12, 0x12, 0x12, 0x1c, 0x1c, 0x1c, 0x26, 0x26, 0x26, + 0x30, 0x30, 0x30, 0x3a, 0x3a, 0x3a, 0x44, 0x44, 0x44, 0x4e, 0x4e, 0x4e, + 0x58, 0x58, 0x58, 0x62, 0x62, 0x62, 0x6c, 0x6c, 0x6c, 0x76, 0x76, 0x76, + 0x80, 0x80, 0x80, 0x8a, 0x8a, 0x8a, 0x94, 0x94, 0x94, 0x9e, 0x9e, 0x9e, + 0xa8, 0xa8, 0xa8, 0xb2, 0xb2, 0xb2, 0xbc, 0xbc, 0xbc, 0xc6, 0xc6, 0xc6, + 0xd0, 0xd0, 0xd0, 0xda, 0xda, 0xda, 0xe4, 0xe4, 0xe4, 0xee, 0xee, 0xee, +}; + + +/* + * VT340 undocumented behavior regarding the color palette reported + * by Vertis Sidus(@vrtsds): + * it loads the first fifteen colors as 1 through 15, and loads the + * sixteenth color as 0. + */ +static const unsigned char pal_vt340_mono[] = { + /* 1 Gray-2 */ 13 * 255 / 100, 13 * 255 / 100, 13 * 255 / 100, + /* 2 Gray-4 */ 26 * 255 / 100, 26 * 255 / 100, 26 * 255 / 100, + /* 3 Gray-6 */ 40 * 255 / 100, 40 * 255 / 100, 40 * 255 / 100, + /* 4 Gray-1 */ 6 * 255 / 100, 6 * 255 / 100, 6 * 255 / 100, + /* 5 Gray-3 */ 20 * 255 / 100, 20 * 255 / 100, 20 * 255 / 100, + /* 6 Gray-5 */ 33 * 255 / 100, 33 * 255 / 100, 33 * 255 / 100, + /* 7 White 7 */ 46 * 255 / 100, 46 * 255 / 100, 46 * 255 / 100, + /* 8 Black 0 */ 0 * 255 / 100, 0 * 255 / 100, 0 * 255 / 100, + /* 9 Gray-2 */ 13 * 255 / 100, 13 * 255 / 100, 13 * 255 / 100, + /* 10 Gray-4 */ 26 * 255 / 100, 26 * 255 / 100, 26 * 255 / 100, + /* 11 Gray-6 */ 40 * 255 / 100, 40 * 255 / 100, 40 * 255 / 100, + /* 12 Gray-1 */ 6 * 255 / 100, 6 * 255 / 100, 6 * 255 / 100, + /* 13 Gray-3 */ 20 * 255 / 100, 20 * 255 / 100, 20 * 255 / 100, + /* 14 Gray-5 */ 33 * 255 / 100, 33 * 255 / 100, 33 * 255 / 100, + /* 15 White 7 */ 46 * 255 / 100, 46 * 255 / 100, 46 * 255 / 100, + /* 0 Black */ 0 * 255 / 100, 0 * 255 / 100, 0 * 255 / 100, +}; + + +static const unsigned char pal_vt340_color[] = { + /* 1 Blue */ 20 * 255 / 100, 20 * 255 / 100, 80 * 255 / 100, + /* 2 Red */ 80 * 255 / 100, 13 * 255 / 100, 13 * 255 / 100, + /* 3 Green */ 20 * 255 / 100, 80 * 255 / 100, 20 * 255 / 100, + /* 4 Magenta */ 80 * 255 / 100, 20 * 255 / 100, 80 * 255 / 100, + /* 5 Cyan */ 20 * 255 / 100, 80 * 255 / 100, 80 * 255 / 100, + /* 6 Yellow */ 80 * 255 / 100, 80 * 255 / 100, 20 * 255 / 100, + /* 7 Gray 50% */ 53 * 255 / 100, 53 * 255 / 100, 53 * 255 / 100, + /* 8 Gray 25% */ 26 * 255 / 100, 26 * 255 / 100, 26 * 255 / 100, + /* 9 Blue* */ 33 * 255 / 100, 33 * 255 / 100, 60 * 255 / 100, + /* 10 Red* */ 60 * 255 / 100, 26 * 255 / 100, 26 * 255 / 100, + /* 11 Green* */ 33 * 255 / 100, 60 * 255 / 100, 33 * 255 / 100, + /* 12 Magenta* */ 60 * 255 / 100, 33 * 255 / 100, 60 * 255 / 100, + /* 13 Cyan* */ 33 * 255 / 100, 60 * 255 / 100, 60 * 255 / 100, + /* 14 Yellow* */ 60 * 255 / 100, 60 * 255 / 100, 33 * 255 / 100, + /* 15 Gray 75% */ 80 * 255 / 100, 80 * 255 / 100, 80 * 255 / 100, + /* 0 Black */ 0 * 255 / 100, 0 * 255 / 100, 0 * 255 / 100, +}; + + +/* create dither context object */ +SIXELAPI SIXELSTATUS +sixel_dither_new( + sixel_dither_t /* out */ **ppdither, /* dither object to be created */ + int /* in */ ncolors, /* required colors */ + sixel_allocator_t /* in */ *allocator) /* allocator, null if you use + default allocator */ +{ + SIXELSTATUS status = SIXEL_FALSE; + size_t headsize; + size_t datasize; + size_t wholesize; + int quality_mode; + + /* ensure given pointer is not null */ + if (ppdither == NULL) { + sixel_helper_set_additional_message( + "sixel_dither_new: ppdither is null."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + if (allocator == NULL) { + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + *ppdither = NULL; + goto end; + } + } else { + sixel_allocator_ref(allocator); + } + + if (ncolors < 0) { + ncolors = SIXEL_PALETTE_MAX; + quality_mode = SIXEL_QUALITY_HIGHCOLOR; + } else { + if (ncolors > SIXEL_PALETTE_MAX) { + status = SIXEL_BAD_INPUT; + goto end; + } else if (ncolors < 1) { + status = SIXEL_BAD_INPUT; + sixel_helper_set_additional_message( + "sixel_dither_new: palette colors must be more than 0"); + goto end; + } + quality_mode = SIXEL_QUALITY_LOW; + } + headsize = sizeof(sixel_dither_t); + datasize = (size_t)(ncolors * 3); + wholesize = headsize + datasize; + + *ppdither = (sixel_dither_t *)sixel_allocator_malloc(allocator, wholesize); + if (*ppdither == NULL) { + sixel_allocator_unref(allocator); + sixel_helper_set_additional_message( + "sixel_dither_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + (*ppdither)->ref = 1; + (*ppdither)->palette = (unsigned char*)(*ppdither + 1); + (*ppdither)->cachetable = NULL; + (*ppdither)->reqcolors = ncolors; + (*ppdither)->ncolors = ncolors; + (*ppdither)->origcolors = (-1); + (*ppdither)->keycolor = (-1); + (*ppdither)->optimized = 0; + (*ppdither)->optimize_palette = 0; + (*ppdither)->complexion = 1; + (*ppdither)->bodyonly = 0; + (*ppdither)->method_for_largest = SIXEL_LARGE_NORM; + (*ppdither)->method_for_rep = SIXEL_REP_CENTER_BOX; + (*ppdither)->method_for_diffuse = SIXEL_DIFFUSE_FS; + (*ppdither)->quality_mode = quality_mode; + (*ppdither)->pixelformat = SIXEL_PIXELFORMAT_RGB888; + (*ppdither)->allocator = allocator; + + status = SIXEL_OK; + +end: + return status; +} + + +/* create dither context object (deprecated) */ +SIXELAPI sixel_dither_t * +sixel_dither_create( + int /* in */ ncolors) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_dither_t *dither = NULL; + + status = sixel_dither_new(&dither, ncolors, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + return dither; +} + + +SIXELAPI void +sixel_dither_destroy( + sixel_dither_t /* in */ *dither) +{ + sixel_allocator_t *allocator; + + if (dither) { + allocator = dither->allocator; + sixel_allocator_free(allocator, dither->cachetable); + dither->cachetable = NULL; + sixel_allocator_free(allocator, dither); + sixel_allocator_unref(allocator); + } +} + + +SIXELAPI void +sixel_dither_ref( + sixel_dither_t /* in */ *dither) +{ + /* TODO: be thread safe */ + ++dither->ref; +} + + +SIXELAPI void +sixel_dither_unref( + sixel_dither_t /* in */ *dither) +{ + /* TODO: be thread safe */ + if (dither != NULL && --dither->ref == 0) { + sixel_dither_destroy(dither); + } +} + + +SIXELAPI sixel_dither_t * +sixel_dither_get( + int /* in */ builtin_dither) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char *palette; + int ncolors; + int keycolor; + sixel_dither_t *dither = NULL; + + switch (builtin_dither) { + case SIXEL_BUILTIN_MONO_DARK: + ncolors = 2; + palette = (unsigned char *)pal_mono_dark; + keycolor = 0; + break; + case SIXEL_BUILTIN_MONO_LIGHT: + ncolors = 2; + palette = (unsigned char *)pal_mono_light; + keycolor = 0; + break; + case SIXEL_BUILTIN_XTERM16: + ncolors = 16; + palette = (unsigned char *)pal_xterm256; + keycolor = (-1); + break; + case SIXEL_BUILTIN_XTERM256: + ncolors = 256; + palette = (unsigned char *)pal_xterm256; + keycolor = (-1); + break; + case SIXEL_BUILTIN_VT340_MONO: + ncolors = 16; + palette = (unsigned char *)pal_vt340_mono; + keycolor = (-1); + break; + case SIXEL_BUILTIN_VT340_COLOR: + ncolors = 16; + palette = (unsigned char *)pal_vt340_color; + keycolor = (-1); + break; + case SIXEL_BUILTIN_G1: + ncolors = 2; + palette = (unsigned char *)pal_gray_1bit; + keycolor = (-1); + break; + case SIXEL_BUILTIN_G2: + ncolors = 4; + palette = (unsigned char *)pal_gray_2bit; + keycolor = (-1); + break; + case SIXEL_BUILTIN_G4: + ncolors = 16; + palette = (unsigned char *)pal_gray_4bit; + keycolor = (-1); + break; + case SIXEL_BUILTIN_G8: + ncolors = 256; + palette = (unsigned char *)pal_gray_8bit; + keycolor = (-1); + break; + default: + goto end; + } + + status = sixel_dither_new(&dither, ncolors, NULL); + if (SIXEL_FAILED(status)) { + dither = NULL; + goto end; + } + + dither->palette = palette; + dither->keycolor = keycolor; + dither->optimized = 1; + dither->optimize_palette = 0; + +end: + return dither; +} + + +static void +sixel_dither_set_method_for_largest( + sixel_dither_t /* in */ *dither, + int /* in */ method_for_largest) +{ + if (method_for_largest == SIXEL_LARGE_AUTO) { + method_for_largest = SIXEL_LARGE_NORM; + } + dither->method_for_largest = method_for_largest; +} + + +static void +sixel_dither_set_method_for_rep( + sixel_dither_t /* in */ *dither, + int /* in */ method_for_rep) +{ + if (method_for_rep == SIXEL_REP_AUTO) { + method_for_rep = SIXEL_REP_CENTER_BOX; + } + dither->method_for_rep = method_for_rep; +} + + +static void +sixel_dither_set_quality_mode( + sixel_dither_t /* in */ *dither, + int /* in */ quality_mode) +{ + if (quality_mode == SIXEL_QUALITY_AUTO) { + if (dither->ncolors <= 8) { + quality_mode = SIXEL_QUALITY_HIGH; + } else { + quality_mode = SIXEL_QUALITY_LOW; + } + } + dither->quality_mode = quality_mode; +} + + +SIXELAPI SIXELSTATUS +sixel_dither_initialize( + sixel_dither_t /* in */ *dither, + unsigned char /* in */ *data, + int /* in */ width, + int /* in */ height, + int /* in */ pixelformat, + int /* in */ method_for_largest, + int /* in */ method_for_rep, + int /* in */ quality_mode) +{ + unsigned char *buf = NULL; + unsigned char *normalized_pixels = NULL; + unsigned char *input_pixels; + SIXELSTATUS status = SIXEL_FALSE; + + /* ensure dither object is not null */ + if (dither == NULL) { + sixel_helper_set_additional_message( + "sixel_dither_new: dither is null."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + /* increment ref count */ + sixel_dither_ref(dither); + + sixel_dither_set_pixelformat(dither, pixelformat); + + switch (pixelformat) { + case SIXEL_PIXELFORMAT_RGB888: + input_pixels = data; + break; + default: + /* normalize pixelformat */ + normalized_pixels + = (unsigned char *)sixel_allocator_malloc(dither->allocator, (size_t)(width * height * 3)); + if (normalized_pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_dither_initialize: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + status = sixel_helper_normalize_pixelformat( + normalized_pixels, + &pixelformat, + data, + pixelformat, + width, + height); + if (SIXEL_FAILED(status)) { + goto end; + } + input_pixels = normalized_pixels; + break; + } + + sixel_dither_set_method_for_largest(dither, method_for_largest); + sixel_dither_set_method_for_rep(dither, method_for_rep); + sixel_dither_set_quality_mode(dither, quality_mode); + + status = sixel_quant_make_palette(&buf, + input_pixels, + (unsigned int)(width * height * 3), + SIXEL_PIXELFORMAT_RGB888, + (unsigned int)dither->reqcolors, + (unsigned int *)&dither->ncolors, + (unsigned int *)&dither->origcolors, + dither->method_for_largest, + dither->method_for_rep, + dither->quality_mode, + dither->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + memcpy(dither->palette, buf, (size_t)(dither->ncolors * 3)); + + dither->optimized = 1; + if (dither->origcolors <= dither->ncolors) { + dither->method_for_diffuse = SIXEL_DIFFUSE_NONE; + } + + sixel_quant_free_palette(buf, dither->allocator); + status = SIXEL_OK; + +end: + free(normalized_pixels); + + /* decrement ref count */ + sixel_dither_unref(dither); + + return status; +} + + +/* set diffusion type, choose from enum methodForDiffuse */ +SIXELAPI void +sixel_dither_set_diffusion_type( + sixel_dither_t /* in */ *dither, + int /* in */ method_for_diffuse) +{ + if (method_for_diffuse == SIXEL_DIFFUSE_AUTO) { + if (dither->ncolors > 16) { + method_for_diffuse = SIXEL_DIFFUSE_FS; + } else { + method_for_diffuse = SIXEL_DIFFUSE_ATKINSON; + } + } + dither->method_for_diffuse = method_for_diffuse; +} + + +/* get number of palette colors */ +SIXELAPI int +sixel_dither_get_num_of_palette_colors( + sixel_dither_t /* in */ *dither) +{ + return dither->ncolors; +} + + +/* get number of histogram colors */ +SIXELAPI int +sixel_dither_get_num_of_histogram_colors( + sixel_dither_t /* in */ *dither) /* dither context object */ +{ + return dither->origcolors; +} + + +/* typoed: remained for keeping compatibility */ +SIXELAPI int +sixel_dither_get_num_of_histgram_colors( + sixel_dither_t /* in */ *dither) /* dither context object */ +{ + return sixel_dither_get_num_of_histogram_colors(dither); +} + + +/* get palette */ +SIXELAPI unsigned char * +sixel_dither_get_palette( + sixel_dither_t /* in */ *dither) /* dither context object */ +{ + return dither->palette; +} + + +/* set palette */ +SIXELAPI void +sixel_dither_set_palette( + sixel_dither_t /* in */ *dither, /* dither context object */ + unsigned char /* in */ *palette) +{ + memcpy(dither->palette, palette, (size_t)(dither->ncolors * 3)); +} + + +/* set the factor of complexion color correcting */ +SIXELAPI void +sixel_dither_set_complexion_score( + sixel_dither_t /* in */ *dither, /* dither context object */ + int /* in */ score) /* complexion score (>= 1) */ +{ + dither->complexion = score; +} + + +/* set whether omitting palette difinition */ +SIXELAPI void +sixel_dither_set_body_only( + sixel_dither_t /* in */ *dither, /* dither context object */ + int /* in */ bodyonly) /* 0: output palette section + 1: do not output palette section */ +{ + dither->bodyonly = bodyonly; +} + + +/* set whether optimize palette size */ +SIXELAPI void +sixel_dither_set_optimize_palette( + sixel_dither_t /* in */ *dither, /* dither context object */ + int /* in */ do_opt) /* 0: optimize palette size + 1: don't optimize palette size */ +{ + dither->optimize_palette = do_opt; +} + + +/* set pixelformat */ +SIXELAPI void +sixel_dither_set_pixelformat( + sixel_dither_t /* in */ *dither, /* dither context object */ + int /* in */ pixelformat) /* one of enum pixelFormat */ +{ + dither->pixelformat = pixelformat; +} + + +/* set transparent */ +SIXELAPI void +sixel_dither_set_transparent( + sixel_dither_t /* in */ *dither, /* dither context object */ + int /* in */ transparent) /* transparent color index */ +{ + dither->keycolor = transparent; +} + + +/* set transparent */ +SIXELAPI sixel_index_t * +sixel_dither_apply_palette( + sixel_dither_t /* in */ *dither, + unsigned char /* in */ *pixels, + int /* in */ width, + int /* in */ height) +{ + SIXELSTATUS status = SIXEL_FALSE; + size_t bufsize; + sixel_index_t *dest = NULL; + int ncolors; + unsigned char *normalized_pixels = NULL; + unsigned char *input_pixels; + + /* ensure dither object is not null */ + if (dither == NULL) { + sixel_helper_set_additional_message( + "sixel_dither_apply_palette: dither is null."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + sixel_dither_ref(dither); + + bufsize = (size_t)(width * height) * sizeof(sixel_index_t); + dest = (sixel_index_t *)sixel_allocator_malloc(dither->allocator, bufsize); + if (dest == NULL) { + sixel_helper_set_additional_message( + "sixel_dither_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + /* if quality_mode is full, do not use palette caching */ + if (dither->quality_mode == SIXEL_QUALITY_FULL) { + dither->optimized = 0; + } + + if (dither->cachetable == NULL && dither->optimized) { + if (dither->palette != pal_mono_dark && dither->palette != pal_mono_light) { + dither->cachetable = (unsigned short *)sixel_allocator_calloc(dither->allocator, + (size_t)(1 << 3 * 5), + sizeof(unsigned short)); + if (dither->cachetable == NULL) { + sixel_helper_set_additional_message( + "sixel_dither_new: sixel_allocator_calloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + } + } + + if (dither->pixelformat != SIXEL_PIXELFORMAT_RGB888) { + /* normalize pixelformat */ + normalized_pixels + = (unsigned char *)sixel_allocator_malloc(dither->allocator, (size_t)(width * height * 3)); + if (normalized_pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_dither_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + status = sixel_helper_normalize_pixelformat(normalized_pixels, + &dither->pixelformat, + pixels, dither->pixelformat, + width, height); + if (SIXEL_FAILED(status)) { + goto end; + } + input_pixels = normalized_pixels; + } else { + input_pixels = pixels; + } + + status = sixel_quant_apply_palette(dest, + input_pixels, + width, height, 3, + dither->palette, + dither->ncolors, + dither->method_for_diffuse, + dither->optimized, + dither->optimize_palette, + dither->complexion, + dither->cachetable, + &ncolors, + dither->allocator); + if (SIXEL_FAILED(status)) { + free(dest); + dest = NULL; + goto end; + } + + dither->ncolors = ncolors; + +end: + free(normalized_pixels); + sixel_dither_unref(dither); + return dest; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + sixel_dither_t *dither = NULL; + int nret = EXIT_FAILURE; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + dither = sixel_dither_create(2); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (dither == NULL) { + goto error; + } + sixel_dither_ref(dither); + sixel_dither_unref(dither); + nret = EXIT_SUCCESS; + +error: + sixel_dither_unref(dither); + return nret; +} + +static int +test2(void) +{ + sixel_dither_t *dither = NULL; + int colors; + int nret = EXIT_FAILURE; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + dither = sixel_dither_create(INT_MAX); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (dither == NULL) { + goto error; + } + sixel_dither_set_body_only(dither, 1); + colors = sixel_dither_get_num_of_histogram_colors(dither); + if (colors != -1) { + goto error; + } + nret = EXIT_SUCCESS; + +error: + sixel_dither_unref(dither); + return nret; +} + + +SIXELAPI int +sixel_dither_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/dither.h b/ThirdParty/libsixel/src/dither.h new file mode 100644 index 0000000000..1c6d203a65 --- /dev/null +++ b/ThirdParty/libsixel/src/dither.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_DITHER_H +#define LIBSIXEL_DITHER_H + +#include + +/* dither context object */ +struct sixel_dither { + unsigned int ref; /* reference counter */ + unsigned char *palette; /* palette definition */ + unsigned short *cachetable; /* cache table */ + int reqcolors; /* requested colors */ + int ncolors; /* active colors */ + int origcolors; /* original colors */ + int optimized; /* pixel is 15bpp compressable */ + int optimize_palette; /* minimize palette size */ + int complexion; /* for complexion correction */ + int bodyonly; /* do not output palette section if true */ + int method_for_largest; /* method for finding the largest dimention + for splitting */ + int method_for_rep; /* method for choosing a color from the box */ + int method_for_diffuse; /* method for diffusing */ + int quality_mode; /* quality of histogram */ + int keycolor; /* background color */ + int pixelformat; /* pixelformat for internal processing */ + sixel_allocator_t *allocator; /* allocator */ +}; + +#ifdef __cplusplus +extern "C" { +#endif + +/* apply palette */ +sixel_index_t * +sixel_dither_apply_palette(struct sixel_dither /* in */ *dither, + unsigned char /* in */ *pixels, + int /* in */ width, + int /* in */ height); + +#if HAVE_TESTS +int +sixel_frame_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_DITHER_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/encoder.c b/ThirdParty/libsixel/src/encoder.c new file mode 100644 index 0000000000..e050045d18 --- /dev/null +++ b/ThirdParty/libsixel/src/encoder.c @@ -0,0 +1,2046 @@ +/* + * Copyright (c) 2014-2019 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +# include +#endif /* STDC_HEADERS */ +# if HAVE_STRING_H +#include +#endif /* HAVE_STRING_H */ +#if HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if HAVE_SYS_UNISTD_H +# include +#endif /* HAVE_SYS_UNISTD_H */ +#if HAVE_SYS_TYPES_H +# include +#endif /* HAVE_SYS_TYPES_H */ +#if HAVE_TIME_H +# include +#endif /* HAVE_TIME_H */ +#if HAVE_SYS_TIME_H +# include +#endif /* HAVE_SYS_TIME_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_INTTYPES_H */ +#if HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#if HAVE_SYS_STAT_H +# include +#endif /* HAVE_SYS_STAT_H */ +#if HAVE_FCNTL_H +# include +#endif /* HAVE_FCNTL_H */ + +#include +#include "tty.h" +#include "encoder.h" +#include "rgblookup.h" + + +static char * +arg_strdup( + char const /* in */ *s, /* source buffer */ + sixel_allocator_t /* in */ *allocator) /* allocator object for + destination buffer */ +{ + char *p; + + p = (char *)sixel_allocator_malloc(allocator, strlen(s) + 1); + if (p) { + strcpy(p, s); + } + return p; +} + + +/* An clone function of XColorSpec() of xlib */ +static SIXELSTATUS +sixel_parse_x_colorspec( + unsigned char /* out */ **bgcolor, /* destination buffer */ + char const /* in */ *s, /* source buffer */ + sixel_allocator_t /* in */ *allocator) /* allocator object for + destination buffer */ +{ + SIXELSTATUS status = SIXEL_FALSE; + char *p; + unsigned char components[3]; + int component_index = 0; + unsigned long v; + char *endptr; + char *buf = NULL; + struct color const *pcolor; + + /* from rgb_lookup.h generated by gpref */ + pcolor = lookup_rgb(s, strlen(s)); + if (pcolor) { + *bgcolor = (unsigned char *)sixel_allocator_malloc(allocator, 3); + if (*bgcolor == NULL) { + sixel_helper_set_additional_message( + "sixel_parse_x_colorspec: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + (*bgcolor)[0] = pcolor->r; + (*bgcolor)[1] = pcolor->g; + (*bgcolor)[2] = pcolor->b; + } else if (s[0] == 'r' && s[1] == 'g' && s[2] == 'b' && s[3] == ':') { + p = buf = arg_strdup(s + 4, allocator); + if (buf == NULL) { + sixel_helper_set_additional_message( + "sixel_parse_x_colorspec: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + while (*p) { + v = 0; + for (endptr = p; endptr - p <= 12; ++endptr) { + if (*endptr >= '0' && *endptr <= '9') { + v = (v << 4) | (unsigned long)(*endptr - '0'); + } else if (*endptr >= 'a' && *endptr <= 'f') { + v = (v << 4) | (unsigned long)(*endptr - 'a' + 10); + } else if (*endptr >= 'A' && *endptr <= 'F') { + v = (v << 4) | (unsigned long)(*endptr - 'A' + 10); + } else { + break; + } + } + if (endptr - p == 0) { + break; + } + if (endptr - p > 4) { + break; + } + v = v << ((4 - (endptr - p)) * 4) >> 8; + components[component_index++] = (unsigned char)v; + p = endptr; + if (component_index == 3) { + break; + } + if (*p == '\0') { + break; + } + if (*p != '/') { + break; + } + ++p; + } + if (component_index != 3 || *p != '\0' || *p == '/') { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + *bgcolor = (unsigned char *)sixel_allocator_malloc(allocator, 3); + if (*bgcolor == NULL) { + sixel_helper_set_additional_message( + "sixel_parse_x_colorspec: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + (*bgcolor)[0] = components[0]; + (*bgcolor)[1] = components[1]; + (*bgcolor)[2] = components[2]; + } else if (*s == '#') { + buf = arg_strdup(s + 1, allocator); + if (buf == NULL) { + sixel_helper_set_additional_message( + "sixel_parse_x_colorspec: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + for (p = endptr = buf; endptr - p <= 12; ++endptr) { + if (*endptr >= '0' && *endptr <= '9') { + *endptr -= '0'; + } else if (*endptr >= 'a' && *endptr <= 'f') { + *endptr -= 'a' - 10; + } else if (*endptr >= 'A' && *endptr <= 'F') { + *endptr -= 'A' - 10; + } else if (*endptr == '\0') { + break; + } else { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + } + if (endptr - p > 12) { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + *bgcolor = (unsigned char *)sixel_allocator_malloc(allocator, 3); + if (*bgcolor == NULL) { + sixel_helper_set_additional_message( + "sixel_parse_x_colorspec: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + switch (endptr - p) { + case 3: + (*bgcolor)[0] = (unsigned char)(p[0] << 4); + (*bgcolor)[1] = (unsigned char)(p[1] << 4); + (*bgcolor)[2] = (unsigned char)(p[2] << 4); + break; + case 6: + (*bgcolor)[0] = (unsigned char)(p[0] << 4 | p[1]); + (*bgcolor)[1] = (unsigned char)(p[2] << 4 | p[3]); + (*bgcolor)[2] = (unsigned char)(p[4] << 4 | p[4]); + break; + case 9: + (*bgcolor)[0] = (unsigned char)(p[0] << 4 | p[1]); + (*bgcolor)[1] = (unsigned char)(p[3] << 4 | p[4]); + (*bgcolor)[2] = (unsigned char)(p[6] << 4 | p[7]); + break; + case 12: + (*bgcolor)[0] = (unsigned char)(p[0] << 4 | p[1]); + (*bgcolor)[1] = (unsigned char)(p[4] << 4 | p[5]); + (*bgcolor)[2] = (unsigned char)(p[8] << 4 | p[9]); + break; + default: + status = SIXEL_BAD_ARGUMENT; + goto end; + } + } else { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + status = SIXEL_OK; + +end: + sixel_allocator_free(allocator, buf); + + return status; +} + + +/* generic writer function for passing to sixel_output_new() */ +static int +sixel_write_callback(char *data, int size, void *priv) +{ + int result; + +#if defined(__MINGW64__) + result = write(*(int *)priv, data, (unsigned int)size); +#else + result = write(*(int *)priv, data, (size_t)size); +#endif + + return result; +} + + +/* the writer function with hex-encoding for passing to sixel_output_new() */ +static int +sixel_hex_write_callback( + char /* in */ *data, + int /* in */ size, + void /* in */ *priv) +{ + char hex[SIXEL_OUTPUT_PACKET_SIZE * 2]; + int i; + int j; + int result; + + for (i = j = 0; i < size; ++i, ++j) { + hex[j] = (data[i] >> 4) & 0xf; + hex[j] += (hex[j] < 10 ? '0': ('a' - 10)); + hex[++j] = data[i] & 0xf; + hex[j] += (hex[j] < 10 ? '0': ('a' - 10)); + } + +#if defined(__MINGW64__) + result = write(*(int *)priv, hex, (unsigned int)(size * 2)); +#else + result = write(*(int *)priv, hex, (size_t)(size * 2)); +#endif + + return result; +} + + +/* returns monochrome dithering context object */ +static SIXELSTATUS +sixel_prepare_monochrome_palette( + sixel_dither_t /* out */ **dither, + int /* in */ finvert) +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (finvert) { + *dither = sixel_dither_get(SIXEL_BUILTIN_MONO_LIGHT); + } else { + *dither = sixel_dither_get(SIXEL_BUILTIN_MONO_DARK); + } + if (*dither == NULL) { + sixel_helper_set_additional_message( + "sixel_prepare_monochrome_palette: sixel_dither_get() failed."); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +/* returns dithering context object with specified builtin palette */ +static SIXELSTATUS +sixel_prepare_builtin_palette( + sixel_dither_t /* out */ **dither, + int /* in */ builtin_palette) +{ + SIXELSTATUS status = SIXEL_FALSE; + + *dither = sixel_dither_get(builtin_palette); + if (*dither == NULL) { + sixel_helper_set_additional_message( + "sixel_prepare_builtin_palette: sixel_dither_get() failed."); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +typedef struct sixel_callback_context_for_mapfile { + int reqcolors; + sixel_dither_t *dither; + sixel_allocator_t *allocator; +} sixel_callback_context_for_mapfile_t; + + +/* callback function for sixel_helper_load_image_file() */ +static SIXELSTATUS +load_image_callback_for_palette( + sixel_frame_t /* in */ *frame, /* frame object from image loader */ + void /* in */ *data) /* private data */ +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_callback_context_for_mapfile_t *callback_context; + + /* get callback context object from the private data */ + callback_context = (sixel_callback_context_for_mapfile_t *)data; + + switch (sixel_frame_get_pixelformat(frame)) { + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + case SIXEL_PIXELFORMAT_PAL8: + if (sixel_frame_get_palette(frame) == NULL) { + status = SIXEL_LOGIC_ERROR; + goto end; + } + /* create new dither object */ + status = sixel_dither_new( + &callback_context->dither, + sixel_frame_get_ncolors(frame), + callback_context->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + /* use palette which is extracted from the image */ + sixel_dither_set_palette(callback_context->dither, + sixel_frame_get_palette(frame)); + /* success */ + status = SIXEL_OK; + break; + case SIXEL_PIXELFORMAT_G1: + /* use 1bpp grayscale builtin palette */ + callback_context->dither = sixel_dither_get(SIXEL_BUILTIN_G1); + /* success */ + status = SIXEL_OK; + break; + case SIXEL_PIXELFORMAT_G2: + /* use 2bpp grayscale builtin palette */ + callback_context->dither = sixel_dither_get(SIXEL_BUILTIN_G1); + callback_context->dither = sixel_dither_get(SIXEL_BUILTIN_G2); + /* success */ + status = SIXEL_OK; + break; + case SIXEL_PIXELFORMAT_G4: + /* use 4bpp grayscale builtin palette */ + callback_context->dither = sixel_dither_get(SIXEL_BUILTIN_G4); + /* success */ + status = SIXEL_OK; + break; + case SIXEL_PIXELFORMAT_G8: + /* use 8bpp grayscale builtin palette */ + callback_context->dither = sixel_dither_get(SIXEL_BUILTIN_G8); + /* success */ + status = SIXEL_OK; + break; + default: + /* create new dither object */ + status = sixel_dither_new( + &callback_context->dither, + callback_context->reqcolors, + callback_context->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + /* create adaptive palette from given frame object */ + status = sixel_dither_initialize(callback_context->dither, + sixel_frame_get_pixels(frame), + sixel_frame_get_width(frame), + sixel_frame_get_height(frame), + sixel_frame_get_pixelformat(frame), + SIXEL_LARGE_NORM, + SIXEL_REP_CENTER_BOX, + SIXEL_QUALITY_HIGH); + if (SIXEL_FAILED(status)) { + sixel_dither_unref(callback_context->dither); + goto end; + } + + /* success */ + status = SIXEL_OK; + + break; + } + +end: + return status; +} + + +/* create palette from specified map file */ +static SIXELSTATUS +sixel_prepare_specified_palette( + sixel_dither_t /* out */ **dither, + sixel_encoder_t /* in */ *encoder) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_callback_context_for_mapfile_t callback_context; + + callback_context.reqcolors = encoder->reqcolors; + callback_context.dither = NULL; + callback_context.allocator = encoder->allocator; + + status = sixel_helper_load_image_file(encoder->mapfile, + 1, /* fstatic */ + 1, /* fuse_palette */ + SIXEL_PALETTE_MAX, /* reqcolors */ + encoder->bgcolor, + SIXEL_LOOP_DISABLE, + load_image_callback_for_palette, + encoder->finsecure, + encoder->cancel_flag, + &callback_context, + encoder->allocator); + if (status != SIXEL_OK) { + return status; + } + + *dither = callback_context.dither; + + return status; +} + + +/* create dither object from a frame */ +static SIXELSTATUS +sixel_encoder_prepare_palette( + sixel_encoder_t *encoder, /* encoder object */ + sixel_frame_t *frame, /* input frame object */ + sixel_dither_t **dither) /* dither object to be created from the frame */ +{ + SIXELSTATUS status = SIXEL_FALSE; + int histogram_colors; + + switch (encoder->color_option) { + case SIXEL_COLOR_OPTION_HIGHCOLOR: + if (encoder->dither_cache) { + *dither = encoder->dither_cache; + status = SIXEL_OK; + } else { + status = sixel_dither_new(dither, (-1), encoder->allocator); + } + goto end; + case SIXEL_COLOR_OPTION_MONOCHROME: + if (encoder->dither_cache) { + *dither = encoder->dither_cache; + status = SIXEL_OK; + } else { + status = sixel_prepare_monochrome_palette(dither, encoder->finvert); + } + goto end; + case SIXEL_COLOR_OPTION_MAPFILE: + if (encoder->dither_cache) { + *dither = encoder->dither_cache; + status = SIXEL_OK; + } else { + status = sixel_prepare_specified_palette(dither, encoder); + } + goto end; + case SIXEL_COLOR_OPTION_BUILTIN: + if (encoder->dither_cache) { + *dither = encoder->dither_cache; + status = SIXEL_OK; + } else { + status = sixel_prepare_builtin_palette(dither, encoder->builtin_palette); + } + goto end; + case SIXEL_COLOR_OPTION_DEFAULT: + default: + break; + } + + if (sixel_frame_get_pixelformat(frame) & SIXEL_FORMATTYPE_PALETTE) { + if (!sixel_frame_get_palette(frame)) { + status = SIXEL_LOGIC_ERROR; + goto end; + } + status = sixel_dither_new(dither, sixel_frame_get_ncolors(frame), + encoder->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + sixel_dither_set_palette(*dither, sixel_frame_get_palette(frame)); + sixel_dither_set_pixelformat(*dither, sixel_frame_get_pixelformat(frame)); + if (sixel_frame_get_transparent(frame) != (-1)) { + sixel_dither_set_transparent(*dither, sixel_frame_get_transparent(frame)); + } + if (*dither && encoder->dither_cache) { + sixel_dither_unref(encoder->dither_cache); + } + goto end; + } + + if (sixel_frame_get_pixelformat(frame) & SIXEL_FORMATTYPE_GRAYSCALE) { + switch (sixel_frame_get_pixelformat(frame)) { + case SIXEL_PIXELFORMAT_G1: + *dither = sixel_dither_get(SIXEL_BUILTIN_G1); + break; + case SIXEL_PIXELFORMAT_G2: + *dither = sixel_dither_get(SIXEL_BUILTIN_G2); + break; + case SIXEL_PIXELFORMAT_G4: + *dither = sixel_dither_get(SIXEL_BUILTIN_G4); + break; + case SIXEL_PIXELFORMAT_G8: + *dither = sixel_dither_get(SIXEL_BUILTIN_G8); + break; + default: + *dither = NULL; + status = SIXEL_LOGIC_ERROR; + goto end; + } + if (*dither && encoder->dither_cache) { + sixel_dither_unref(encoder->dither_cache); + } + sixel_dither_set_pixelformat(*dither, sixel_frame_get_pixelformat(frame)); + status = SIXEL_OK; + goto end; + } + + if (encoder->dither_cache) { + sixel_dither_unref(encoder->dither_cache); + } + status = sixel_dither_new(dither, encoder->reqcolors, encoder->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = sixel_dither_initialize(*dither, + sixel_frame_get_pixels(frame), + sixel_frame_get_width(frame), + sixel_frame_get_height(frame), + sixel_frame_get_pixelformat(frame), + encoder->method_for_largest, + encoder->method_for_rep, + encoder->quality_mode); + if (SIXEL_FAILED(status)) { + sixel_dither_unref(*dither); + goto end; + } + + histogram_colors = sixel_dither_get_num_of_histogram_colors(*dither); + if (histogram_colors <= encoder->reqcolors) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_NONE; + } + sixel_dither_set_pixelformat(*dither, sixel_frame_get_pixelformat(frame)); + + status = SIXEL_OK; + +end: + return status; +} + + +/* resize a frame with settings of specified encoder object */ +static SIXELSTATUS +sixel_encoder_do_resize( + sixel_encoder_t /* in */ *encoder, /* encoder object */ + sixel_frame_t /* in */ *frame) /* frame object to be resized */ +{ + SIXELSTATUS status = SIXEL_FALSE; + int src_width; + int src_height; + int dst_width; + int dst_height; + + /* get frame width and height */ + src_width = sixel_frame_get_width(frame); + src_height = sixel_frame_get_height(frame); + + /* settings around scaling */ + dst_width = encoder->pixelwidth; /* may be -1 (default) */ + dst_height = encoder->pixelheight; /* may be -1 (default) */ + + /* if the encoder has percentwidth or percentheight property, + convert them to pixelwidth / pixelheight */ + if (encoder->percentwidth > 0) { + dst_width = src_width * encoder->percentwidth / 100; + } + if (encoder->percentheight > 0) { + dst_height = src_height * encoder->percentheight / 100; + } + + /* if only either width or height is set, set also the other + to retain frame aspect ratio */ + if (encoder->pixelwidth > 0 && dst_height <= 0) { + dst_height = src_height * encoder->pixelwidth / src_width; + } + if (encoder->pixelheight > 0 && dst_width <= 0) { + dst_width = src_width * encoder->pixelheight / src_height; + } + + /* do resize */ + if (dst_width > 0 && dst_height > 0) { + status = sixel_frame_resize(frame, dst_width, dst_height, + encoder->method_for_resampling); + if (SIXEL_FAILED(status)) { + goto end; + } + } + + /* success */ + status = SIXEL_OK; + +end: + return status; +} + + +/* clip a frame with settings of specified encoder object */ +static SIXELSTATUS +sixel_encoder_do_clip( + sixel_encoder_t /* in */ *encoder, /* encoder object */ + sixel_frame_t /* in */ *frame) /* frame object to be resized */ +{ + SIXELSTATUS status = SIXEL_FALSE; + int src_width; + int src_height; + int clip_x; + int clip_y; + int clip_w; + int clip_h; + + /* get frame width and height */ + src_width = sixel_frame_get_width(frame); + src_height = sixel_frame_get_height(frame); + + /* settings around clipping */ + clip_x = encoder->clipx; + clip_y = encoder->clipy; + clip_w = encoder->clipwidth; + clip_h = encoder->clipheight; + + /* adjust clipping width with comparing it to frame width */ + if (clip_w + clip_x > src_width) { + if (clip_x > src_width) { + clip_w = 0; + } else { + clip_w = src_width - clip_x; + } + } + + /* adjust clipping height with comparing it to frame height */ + if (clip_h + clip_y > src_height) { + if (clip_y > src_height) { + clip_h = 0; + } else { + clip_h = src_height - clip_y; + } + } + + /* do clipping */ + if (clip_w > 0 && clip_h > 0) { + status = sixel_frame_clip(frame, clip_x, clip_y, clip_w, clip_h); + if (SIXEL_FAILED(status)) { + goto end; + } + } + + /* success */ + status = SIXEL_OK; + +end: + return status; +} + + +static void +sixel_debug_print_palette( + sixel_dither_t /* in */ *dither /* dithering object */ +) +{ + unsigned char *palette; + int i; + + palette = sixel_dither_get_palette(dither); + fprintf(stderr, "palette:\n"); + for (i = 0; i < sixel_dither_get_num_of_palette_colors(dither); ++i) { + fprintf(stderr, "%d: #%02x%02x%02x\n", i, + palette[i * 3 + 1], + palette[i * 3 + 2], + palette[i * 3 + 3]); + } +} + + +static SIXELSTATUS +sixel_encoder_output_without_macro( + sixel_frame_t /* in */ *frame, + sixel_dither_t /* in */ *dither, + sixel_output_t /* in */ *output, + sixel_encoder_t /* in */ *encoder) +{ + SIXELSTATUS status = SIXEL_OK; + static unsigned char *p; + int depth; + enum { message_buffer_size = 256 }; + char message[message_buffer_size]; + int nwrite; +#if HAVE_NANOSLEEP + int dulation; + int delay; + int lag = 0; + struct timespec tv; +# if HAVE_CLOCK + clock_t start; +# endif +#endif + unsigned char *pixbuf; + int width; + int height; + int pixelformat; + size_t size; + + if (encoder == NULL) { + sixel_helper_set_additional_message( + "sixel_encoder_output_without_macro: encoder object is null."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + if (encoder->color_option == SIXEL_COLOR_OPTION_DEFAULT) { + sixel_dither_set_optimize_palette(dither, 1); + } + + pixelformat = sixel_frame_get_pixelformat(frame); + depth = sixel_helper_compute_depth(pixelformat); + if (depth < 0) { + status = SIXEL_LOGIC_ERROR; + nwrite = sprintf(message, + "sixel_encoder_output_without_macro: " + "sixel_helper_compute_depth(%08x) failed.", + pixelformat); + if (nwrite > 0) { + sixel_helper_set_additional_message(message); + } + goto end; + } + + width = sixel_frame_get_width(frame); + height = sixel_frame_get_height(frame); + size = (size_t)(width * height * depth); + p = (unsigned char *)sixel_allocator_malloc(encoder->allocator, size); + if (p == NULL) { + sixel_helper_set_additional_message( + "sixel_encoder_output_without_macro: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } +#if HAVE_NANOSLEEP && HAVE_CLOCK + start = clock(); +#endif +#if HAVE_NANOSLEEP + delay = sixel_frame_get_delay(frame); + if (delay > 0 && !encoder->fignore_delay) { +# if HAVE_CLOCK + dulation = (int)((clock() - start) * 1000 * 1000 / CLOCKS_PER_SEC) - (int)lag; + lag = 0; +# else + dulation = 0; +# endif + if (dulation < 10000 * delay) { + tv.tv_sec = 0; + tv.tv_nsec = (long)((10000 * delay - dulation) * 1000); + nanosleep(&tv, NULL); + } else { + lag = (int)(10000 * delay - dulation); + } + } +#endif + + pixbuf = sixel_frame_get_pixels(frame); + memcpy(p, pixbuf, (size_t)(width * height * depth)); + + if (encoder->cancel_flag && *encoder->cancel_flag) { + goto end; + } + + status = sixel_encode(p, width, height, depth, dither, output); + if (status != SIXEL_OK) { + goto end; + } + +end: + sixel_allocator_free(encoder->allocator, p); + + return status; +} + + +static SIXELSTATUS +sixel_encoder_output_with_macro( + sixel_frame_t /* in */ *frame, + sixel_dither_t /* in */ *dither, + sixel_output_t /* in */ *output, + sixel_encoder_t /* in */ *encoder) +{ + SIXELSTATUS status = SIXEL_OK; + enum { message_buffer_size = 256 }; + char buffer[message_buffer_size]; + int nwrite; +#if HAVE_NANOSLEEP + int dulation; + int lag = 0; + struct timespec tv; +# if HAVE_CLOCK + clock_t start; +# endif +#endif + unsigned char *pixbuf; + int width; + int height; +#if HAVE_NANOSLEEP + int delay; +#endif + +#if HAVE_NANOSLEEP && HAVE_CLOCK + start = clock(); +#endif + if (sixel_frame_get_loop_no(frame) == 0) { + if (encoder->macro_number >= 0) { + nwrite = sprintf(buffer, "\033P%d;0;1!z", encoder->macro_number); + } else { + nwrite = sprintf(buffer, "\033P%d;0;1!z", sixel_frame_get_frame_no(frame)); + } + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_encoder_output_with_macro: sprintf() failed."); + goto end; + } + nwrite = sixel_write_callback(buffer, (int)strlen(buffer), &encoder->outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_encoder_output_with_macro: sixel_write_callback() failed."); + goto end; + } + + pixbuf = sixel_frame_get_pixels(frame), + width = sixel_frame_get_width(frame), + height = sixel_frame_get_height(frame), + status = sixel_encode(pixbuf, width, height, /* unused */ 3, dither, output); + if (SIXEL_FAILED(status)) { + goto end; + } + + nwrite = sixel_write_callback("\033\\", 2, &encoder->outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_encoder_output_with_macro: sixel_write_callback() failed."); + goto end; + } + } + if (encoder->macro_number < 0) { + nwrite = sprintf(buffer, "\033[%d*z", sixel_frame_get_frame_no(frame)); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_encoder_output_with_macro: sprintf() failed."); + } + nwrite = sixel_write_callback(buffer, (int)strlen(buffer), &encoder->outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_encoder_output_with_macro: sixel_write_callback() failed."); + goto end; + } +#if HAVE_NANOSLEEP + delay = sixel_frame_get_delay(frame); + if (delay > 0 && !encoder->fignore_delay) { +# if HAVE_CLOCK + dulation = (int)((clock() - start) * 1000 * 1000 / CLOCKS_PER_SEC) - (int)lag; + lag = 0; +# else + dulation = 0; +# endif + if (dulation < 10000 * delay) { + tv.tv_sec = 0; + tv.tv_nsec = (long)((10000 * delay - dulation) * 1000); + nanosleep(&tv, NULL); + } else { + lag = (int)(10000 * delay - dulation); + } + } +#endif + } + +end: + return status; +} + + +static SIXELSTATUS +sixel_encoder_encode_frame( + sixel_encoder_t *encoder, + sixel_frame_t *frame, + sixel_output_t *output) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_dither_t *dither = NULL; + int height; + int is_animation = 0; + int nwrite; + + /* evaluate -w, -h, and -c option: crop/scale input source */ + if (encoder->clipfirst) { + /* clipping */ + status = sixel_encoder_do_clip(encoder, frame); + if (SIXEL_FAILED(status)) { + goto end; + } + + /* scaling */ + status = sixel_encoder_do_resize(encoder, frame); + if (SIXEL_FAILED(status)) { + goto end; + } + } else { + /* scaling */ + status = sixel_encoder_do_resize(encoder, frame); + if (SIXEL_FAILED(status)) { + goto end; + } + + /* clipping */ + status = sixel_encoder_do_clip(encoder, frame); + if (SIXEL_FAILED(status)) { + goto end; + } + } + + /* prepare dither context */ + status = sixel_encoder_prepare_palette(encoder, frame, &dither); + if (status != SIXEL_OK) { + goto end; + } + + if (encoder->dither_cache != NULL) { + encoder->dither_cache = dither; + sixel_dither_ref(dither); + } + + /* evaluate -v option: print palette */ + if (encoder->verbose) { + if ((sixel_frame_get_pixelformat(frame) & SIXEL_FORMATTYPE_PALETTE)) { + sixel_debug_print_palette(dither); + } + } + + /* evaluate -d option: set method for diffusion */ + sixel_dither_set_diffusion_type(dither, encoder->method_for_diffuse); + + /* evaluate -C option: set complexion score */ + if (encoder->complexion > 1) { + sixel_dither_set_complexion_score(dither, encoder->complexion); + } + + if (output) { + sixel_output_ref(output); + } else { + /* create output context */ + if (encoder->fuse_macro || encoder->macro_number >= 0) { + /* -u or -n option */ + status = sixel_output_new(&output, + sixel_hex_write_callback, + &encoder->outfd, + encoder->allocator); + } else { + status = sixel_output_new(&output, + sixel_write_callback, + &encoder->outfd, + encoder->allocator); + } + if (SIXEL_FAILED(status)) { + goto end; + } + } + + sixel_output_set_8bit_availability(output, encoder->f8bit); + sixel_output_set_gri_arg_limit(output, encoder->has_gri_arg_limit); + sixel_output_set_palette_type(output, encoder->palette_type); + sixel_output_set_penetrate_multiplexer( + output, encoder->penetrate_multiplexer); + sixel_output_set_encode_policy(output, encoder->encode_policy); + + if (sixel_frame_get_multiframe(frame) && !encoder->fstatic) { + if (sixel_frame_get_loop_no(frame) != 0 || sixel_frame_get_frame_no(frame) != 0) { + is_animation = 1; + } + height = sixel_frame_get_height(frame); + (void) sixel_tty_scroll(sixel_write_callback, encoder->outfd, height, is_animation); + } + + if (encoder->cancel_flag && *encoder->cancel_flag) { + status = SIXEL_INTERRUPTED; + goto end; + } + + /* output sixel: junction of multi-frame processing strategy */ + if (encoder->fuse_macro) { /* -u option */ + /* use macro */ + status = sixel_encoder_output_with_macro(frame, dither, output, encoder); + } else if (encoder->macro_number >= 0) { /* -n option */ + /* use macro */ + status = sixel_encoder_output_with_macro(frame, dither, output, encoder); + } else { + /* do not use macro */ + status = sixel_encoder_output_without_macro(frame, dither, output, encoder); + } + + if (encoder->cancel_flag && *encoder->cancel_flag) { + nwrite = sixel_write_callback("\x18\033\\", 3, &encoder->outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "load_image_callback: sixel_write_callback() failed."); + goto end; + } + status = SIXEL_INTERRUPTED; + } + + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + if (output) { + sixel_output_unref(output); + } + if (dither) { + sixel_dither_unref(dither); + } + + return status; +} + + +/* create encoder object */ +SIXELAPI SIXELSTATUS +sixel_encoder_new( + sixel_encoder_t /* out */ **ppencoder, /* encoder object to be created */ + sixel_allocator_t /* in */ *allocator) /* allocator, null if you use + default allocator */ +{ + SIXELSTATUS status = SIXEL_FALSE; + char const *env_default_bgcolor; + char const *env_default_ncolors; + int ncolors; + + if (allocator == NULL) { + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + } else { + sixel_allocator_ref(allocator); + } + + *ppencoder + = (sixel_encoder_t *)sixel_allocator_malloc(allocator, + sizeof(sixel_encoder_t)); + if (*ppencoder == NULL) { + sixel_helper_set_additional_message( + "sixel_encoder_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + sixel_allocator_unref(allocator); + goto end; + } + + (*ppencoder)->ref = 1; + (*ppencoder)->reqcolors = (-1); + (*ppencoder)->mapfile = NULL; + (*ppencoder)->color_option = SIXEL_COLOR_OPTION_DEFAULT; + (*ppencoder)->builtin_palette = 0; + (*ppencoder)->method_for_diffuse = SIXEL_DIFFUSE_AUTO; + (*ppencoder)->method_for_largest = SIXEL_LARGE_AUTO; + (*ppencoder)->method_for_rep = SIXEL_REP_AUTO; + (*ppencoder)->quality_mode = SIXEL_QUALITY_AUTO; + (*ppencoder)->method_for_resampling = SIXEL_RES_BILINEAR; + (*ppencoder)->loop_mode = SIXEL_LOOP_AUTO; + (*ppencoder)->palette_type = SIXEL_PALETTETYPE_AUTO; + (*ppencoder)->f8bit = 0; + (*ppencoder)->has_gri_arg_limit = 0; + (*ppencoder)->finvert = 0; + (*ppencoder)->fuse_macro = 0; + (*ppencoder)->fignore_delay = 0; + (*ppencoder)->complexion = 1; + (*ppencoder)->fstatic = 0; + (*ppencoder)->pixelwidth = (-1); + (*ppencoder)->pixelheight = (-1); + (*ppencoder)->percentwidth = (-1); + (*ppencoder)->percentheight = (-1); + (*ppencoder)->clipx = 0; + (*ppencoder)->clipy = 0; + (*ppencoder)->clipwidth = 0; + (*ppencoder)->clipheight = 0; + (*ppencoder)->clipfirst = 0; + (*ppencoder)->macro_number = (-1); + (*ppencoder)->verbose = 0; + (*ppencoder)->penetrate_multiplexer = 0; + (*ppencoder)->encode_policy = SIXEL_ENCODEPOLICY_AUTO; + (*ppencoder)->pipe_mode = 0; + (*ppencoder)->bgcolor = NULL; + (*ppencoder)->outfd = STDOUT_FILENO; + (*ppencoder)->finsecure = 0; + (*ppencoder)->cancel_flag = NULL; + (*ppencoder)->dither_cache = NULL; + (*ppencoder)->allocator = allocator; + + /* evaluate environment variable ${SIXEL_BGCOLOR} */ + env_default_bgcolor = getenv("SIXEL_BGCOLOR"); + if (env_default_bgcolor) { + status = sixel_parse_x_colorspec(&(*ppencoder)->bgcolor, + env_default_bgcolor, + allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + } + + /* evaluate environment variable ${SIXEL_COLORS} */ + env_default_ncolors = getenv("SIXEL_COLORS"); + if (env_default_ncolors) { + ncolors = atoi(env_default_ncolors); /* may overflow */ + if (ncolors > 1 && ncolors <= SIXEL_PALETTE_MAX) { + (*ppencoder)->reqcolors = ncolors; + } + } + + /* success */ + status = SIXEL_OK; + + goto end; + +error: + sixel_allocator_free(allocator, *ppencoder); + sixel_allocator_unref(allocator); + *ppencoder = NULL; + +end: + return status; +} + + +/* create encoder object (deprecated version) */ +SIXELAPI /* deprecated */ sixel_encoder_t * +sixel_encoder_create(void) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_encoder_t *encoder = NULL; + + status = sixel_encoder_new(&encoder, NULL); + if (SIXEL_FAILED(status)) { + return NULL; + } + + return encoder; +} + + +/* destroy encoder object */ +static void +sixel_encoder_destroy(sixel_encoder_t *encoder) +{ + sixel_allocator_t *allocator; + + if (encoder) { + allocator = encoder->allocator; + sixel_allocator_free(allocator, encoder->mapfile); + sixel_allocator_free(allocator, encoder->bgcolor); + sixel_dither_unref(encoder->dither_cache); + if (encoder->outfd + && encoder->outfd != STDOUT_FILENO + && encoder->outfd != STDERR_FILENO) { + close(encoder->outfd); + } + sixel_allocator_free(allocator, encoder); + sixel_allocator_unref(allocator); + } +} + + +/* increase reference count of encoder object (thread-unsafe) */ +SIXELAPI void +sixel_encoder_ref(sixel_encoder_t *encoder) +{ + /* TODO: be thread safe */ + ++encoder->ref; +} + + +/* decrease reference count of encoder object (thread-unsafe) */ +SIXELAPI void +sixel_encoder_unref(sixel_encoder_t *encoder) +{ + /* TODO: be thread safe */ + if (encoder != NULL && --encoder->ref == 0) { + sixel_encoder_destroy(encoder); + } +} + + +/* set cancel state flag to encoder object */ +SIXELAPI SIXELSTATUS +sixel_encoder_set_cancel_flag( + sixel_encoder_t /* in */ *encoder, + int /* in */ *cancel_flag +) +{ + SIXELSTATUS status = SIXEL_OK; + + encoder->cancel_flag = cancel_flag; + + return status; +} + + +/* set an option flag to encoder object */ +SIXELAPI SIXELSTATUS +sixel_encoder_setopt( + sixel_encoder_t /* in */ *encoder, + int /* in */ arg, + char const /* in */ *value) +{ + SIXELSTATUS status = SIXEL_FALSE; + int number; + int parsed; + char unit[32]; + + sixel_encoder_ref(encoder); + + switch(arg) { + case SIXEL_OPTFLAG_OUTFILE: /* o */ + if (*value == '\0') { + sixel_helper_set_additional_message( + "no file name specified."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + if (strcmp(value, "-") != 0) { + if (encoder->outfd && encoder->outfd != STDOUT_FILENO) { + close(encoder->outfd); + } + encoder->outfd = open(value, + O_RDWR|O_CREAT|O_TRUNC, + S_IRUSR|S_IWUSR); + } + break; + case SIXEL_OPTFLAG_7BIT_MODE: /* 7 */ + encoder->f8bit = 0; + break; + case SIXEL_OPTFLAG_8BIT_MODE: /* 8 */ + encoder->f8bit = 1; + break; + case SIXEL_OPTFLAG_HAS_GRI_ARG_LIMIT: /* R */ + encoder->has_gri_arg_limit = 1; + break; + case SIXEL_OPTFLAG_COLORS: /* p */ + encoder->reqcolors = atoi(value); + break; + case SIXEL_OPTFLAG_MAPFILE: /* m */ + if (encoder->mapfile) { + sixel_allocator_free(encoder->allocator, encoder->mapfile); + } + encoder->mapfile = arg_strdup(value, encoder->allocator); + if (encoder->mapfile == NULL) { + sixel_helper_set_additional_message( + "sixel_encoder_setopt: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + encoder->color_option = SIXEL_COLOR_OPTION_MAPFILE; + break; + case SIXEL_OPTFLAG_MONOCHROME: /* e */ + encoder->color_option = SIXEL_COLOR_OPTION_MONOCHROME; + break; + case SIXEL_OPTFLAG_HIGH_COLOR: /* I */ + encoder->color_option = SIXEL_COLOR_OPTION_HIGHCOLOR; + break; + case SIXEL_OPTFLAG_BUILTIN_PALETTE: /* b */ + if (strcmp(value, "xterm16") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_XTERM16; + } else if (strcmp(value, "xterm256") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_XTERM256; + } else if (strcmp(value, "vt340mono") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_VT340_MONO; + } else if (strcmp(value, "vt340color") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_VT340_COLOR; + } else if (strcmp(value, "gray1") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_G1; + } else if (strcmp(value, "gray2") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_G2; + } else if (strcmp(value, "gray4") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_G4; + } else if (strcmp(value, "gray8") == 0) { + encoder->builtin_palette = SIXEL_BUILTIN_G8; + } else { + sixel_helper_set_additional_message( + "cannot parse builtin palette option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + encoder->color_option = SIXEL_COLOR_OPTION_BUILTIN; + break; + case SIXEL_OPTFLAG_DIFFUSION: /* d */ + /* parse --diffusion option */ + if (strcmp(value, "auto") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_AUTO; + } else if (strcmp(value, "none") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_NONE; + } else if (strcmp(value, "fs") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_FS; + } else if (strcmp(value, "atkinson") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_ATKINSON; + } else if (strcmp(value, "jajuni") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_JAJUNI; + } else if (strcmp(value, "stucki") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_STUCKI; + } else if (strcmp(value, "burkes") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_BURKES; + } else if (strcmp(value, "a_dither") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_A_DITHER; + } else if (strcmp(value, "x_dither") == 0) { + encoder->method_for_diffuse = SIXEL_DIFFUSE_X_DITHER; + } else { + sixel_helper_set_additional_message( + "specified diffusion method is not supported."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_FIND_LARGEST: /* f */ + /* parse --find-largest option */ + if (value) { + if (strcmp(value, "auto") == 0) { + encoder->method_for_largest = SIXEL_LARGE_AUTO; + } else if (strcmp(value, "norm") == 0) { + encoder->method_for_largest = SIXEL_LARGE_NORM; + } else if (strcmp(value, "lum") == 0) { + encoder->method_for_largest = SIXEL_LARGE_LUM; + } else { + sixel_helper_set_additional_message( + "specified finding method is not supported."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + } + break; + case SIXEL_OPTFLAG_SELECT_COLOR: /* s */ + /* parse --select-color option */ + if (strcmp(value, "auto") == 0) { + encoder->method_for_rep = SIXEL_REP_AUTO; + } else if (strcmp(value, "center") == 0) { + encoder->method_for_rep = SIXEL_REP_CENTER_BOX; + } else if (strcmp(value, "average") == 0) { + encoder->method_for_rep = SIXEL_REP_AVERAGE_COLORS; + } else if ((strcmp(value, "histogram") == 0) || + (strcmp(value, "histgram") == 0)) { + encoder->method_for_rep = SIXEL_REP_AVERAGE_PIXELS; + } else { + sixel_helper_set_additional_message( + "specified finding method is not supported."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_CROP: /* c */ + number = sscanf(value, "%dx%d+%d+%d", + &encoder->clipwidth, &encoder->clipheight, + &encoder->clipx, &encoder->clipy); + if (number != 4) { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + if (encoder->clipwidth <= 0 || encoder->clipheight <= 0) { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + if (encoder->clipx < 0 || encoder->clipy < 0) { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + encoder->clipfirst = 0; + break; + case SIXEL_OPTFLAG_WIDTH: /* w */ + parsed = sscanf(value, "%d%2s", &number, unit); + if (parsed == 2 && strcmp(unit, "%") == 0) { + encoder->pixelwidth = (-1); + encoder->percentwidth = number; + } else if (parsed == 1 || (parsed == 2 && strcmp(unit, "px") == 0)) { + encoder->pixelwidth = number; + encoder->percentwidth = (-1); + } else if (strcmp(value, "auto") == 0) { + encoder->pixelwidth = (-1); + encoder->percentwidth = (-1); + } else { + sixel_helper_set_additional_message( + "cannot parse -w/--width option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + if (encoder->clipwidth) { + encoder->clipfirst = 1; + } + break; + case SIXEL_OPTFLAG_HEIGHT: /* h */ + parsed = sscanf(value, "%d%2s", &number, unit); + if (parsed == 2 && strcmp(unit, "%") == 0) { + encoder->pixelheight = (-1); + encoder->percentheight = number; + } else if (parsed == 1 || (parsed == 2 && strcmp(unit, "px") == 0)) { + encoder->pixelheight = number; + encoder->percentheight = (-1); + } else if (strcmp(value, "auto") == 0) { + encoder->pixelheight = (-1); + encoder->percentheight = (-1); + } else { + sixel_helper_set_additional_message( + "cannot parse -h/--height option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + if (encoder->clipheight) { + encoder->clipfirst = 1; + } + break; + case SIXEL_OPTFLAG_RESAMPLING: /* r */ + /* parse --resampling option */ + if (strcmp(value, "nearest") == 0) { + encoder->method_for_resampling = SIXEL_RES_NEAREST; + } else if (strcmp(value, "gaussian") == 0) { + encoder->method_for_resampling = SIXEL_RES_GAUSSIAN; + } else if (strcmp(value, "hanning") == 0) { + encoder->method_for_resampling = SIXEL_RES_HANNING; + } else if (strcmp(value, "hamming") == 0) { + encoder->method_for_resampling = SIXEL_RES_HAMMING; + } else if (strcmp(value, "bilinear") == 0) { + encoder->method_for_resampling = SIXEL_RES_BILINEAR; + } else if (strcmp(value, "welsh") == 0) { + encoder->method_for_resampling = SIXEL_RES_WELSH; + } else if (strcmp(value, "bicubic") == 0) { + encoder->method_for_resampling = SIXEL_RES_BICUBIC; + } else if (strcmp(value, "lanczos2") == 0) { + encoder->method_for_resampling = SIXEL_RES_LANCZOS2; + } else if (strcmp(value, "lanczos3") == 0) { + encoder->method_for_resampling = SIXEL_RES_LANCZOS3; + } else if (strcmp(value, "lanczos4") == 0) { + encoder->method_for_resampling = SIXEL_RES_LANCZOS4; + } else { + sixel_helper_set_additional_message( + "specified desampling method is not supported."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_QUALITY: /* q */ + /* parse --quality option */ + if (strcmp(value, "auto") == 0) { + encoder->quality_mode = SIXEL_QUALITY_AUTO; + } else if (strcmp(value, "high") == 0) { + encoder->quality_mode = SIXEL_QUALITY_HIGH; + } else if (strcmp(value, "low") == 0) { + encoder->quality_mode = SIXEL_QUALITY_LOW; + } else if (strcmp(value, "full") == 0) { + encoder->quality_mode = SIXEL_QUALITY_FULL; + } else { + sixel_helper_set_additional_message( + "cannot parse quality option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_LOOPMODE: /* l */ + /* parse --loop-control option */ + if (strcmp(value, "auto") == 0) { + encoder->loop_mode = SIXEL_LOOP_AUTO; + } else if (strcmp(value, "force") == 0) { + encoder->loop_mode = SIXEL_LOOP_FORCE; + } else if (strcmp(value, "disable") == 0) { + encoder->loop_mode = SIXEL_LOOP_DISABLE; + } else { + sixel_helper_set_additional_message( + "cannot parse loop-control option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_PALETTE_TYPE: /* t */ + /* parse --palette-type option */ + if (strcmp(value, "auto") == 0) { + encoder->palette_type = SIXEL_PALETTETYPE_AUTO; + } else if (strcmp(value, "hls") == 0) { + encoder->palette_type = SIXEL_PALETTETYPE_HLS; + } else if (strcmp(value, "rgb") == 0) { + encoder->palette_type = SIXEL_PALETTETYPE_RGB; + } else { + sixel_helper_set_additional_message( + "cannot parse palette type option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_BGCOLOR: /* B */ + /* parse --bgcolor option */ + if (encoder->bgcolor) { + sixel_allocator_free(encoder->allocator, encoder->bgcolor); + } + status = sixel_parse_x_colorspec(&encoder->bgcolor, + value, + encoder->allocator); + if (SIXEL_FAILED(status)) { + sixel_helper_set_additional_message( + "cannot parse bgcolor option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_INSECURE: /* k */ + encoder->finsecure = 1; + break; + case SIXEL_OPTFLAG_INVERT: /* i */ + encoder->finvert = 1; + break; + case SIXEL_OPTFLAG_USE_MACRO: /* u */ + encoder->fuse_macro = 1; + break; + case SIXEL_OPTFLAG_MACRO_NUMBER: /* n */ + encoder->macro_number = atoi(value); + if (encoder->macro_number < 0) { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_IGNORE_DELAY: /* g */ + encoder->fignore_delay = 1; + break; + case SIXEL_OPTFLAG_VERBOSE: /* v */ + encoder->verbose = 1; + break; + case SIXEL_OPTFLAG_STATIC: /* S */ + encoder->fstatic = 1; + break; + case SIXEL_OPTFLAG_PENETRATE: /* P */ + encoder->penetrate_multiplexer = 1; + break; + case SIXEL_OPTFLAG_ENCODE_POLICY: /* E */ + if (strcmp(value, "auto") == 0) { + encoder->encode_policy = SIXEL_ENCODEPOLICY_AUTO; + } else if (strcmp(value, "fast") == 0) { + encoder->encode_policy = SIXEL_ENCODEPOLICY_FAST; + } else if (strcmp(value, "size") == 0) { + encoder->encode_policy = SIXEL_ENCODEPOLICY_SIZE; + } else { + sixel_helper_set_additional_message( + "cannot parse encode policy option."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_COMPLEXION_SCORE: /* C */ + encoder->complexion = atoi(value); + if (encoder->complexion < 1) { + sixel_helper_set_additional_message( + "complexion parameter must be 1 or more."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + break; + case SIXEL_OPTFLAG_PIPE_MODE: /* D */ + encoder->pipe_mode = 1; + break; + case '?': /* unknown option */ + default: + /* exit if unknown options are specified */ + sixel_helper_set_additional_message( + "unknwon option is specified."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + /* detects arguments conflictions */ + if (encoder->reqcolors != (-1)) { + switch (encoder->color_option) { + case SIXEL_COLOR_OPTION_MAPFILE: + sixel_helper_set_additional_message( + "option -p, --colors conflicts with -m, --mapfile."); + status = SIXEL_BAD_ARGUMENT; + goto end; + case SIXEL_COLOR_OPTION_MONOCHROME: + sixel_helper_set_additional_message( + "option -e, --monochrome conflicts with -p, --colors."); + status = SIXEL_BAD_ARGUMENT; + goto end; + case SIXEL_COLOR_OPTION_HIGHCOLOR: + sixel_helper_set_additional_message( + "option -p, --colors conflicts with -I, --high-color."); + status = SIXEL_BAD_ARGUMENT; + goto end; + case SIXEL_COLOR_OPTION_BUILTIN: + sixel_helper_set_additional_message( + "option -p, --colors conflicts with -b, --builtin-palette."); + status = SIXEL_BAD_ARGUMENT; + goto end; + default: + break; + } + } + + /* 8bit output option(-8) conflicts width GNU Screen integration(-P) */ + if (encoder->f8bit && encoder->penetrate_multiplexer) { + sixel_helper_set_additional_message( + "option -8 --8bit-mode conflicts" + " with -P, --penetrate."); + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + status = SIXEL_OK; + +end: + sixel_encoder_unref(encoder); + + return status; +} + + +/* called when image loader component load a image frame */ +static SIXELSTATUS +load_image_callback(sixel_frame_t *frame, void *data) +{ + return sixel_encoder_encode_frame((sixel_encoder_t *)data, frame, NULL); +} + + +/* load source data from specified file and encode it to SIXEL format + * output to encoder->outfd */ +SIXELAPI SIXELSTATUS +sixel_encoder_encode( + sixel_encoder_t *encoder, /* encoder object */ + char const *filename) /* input filename */ +{ + SIXELSTATUS status = SIXEL_FALSE; + int fuse_palette = 1; + + if (encoder == NULL) { +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + encoder = sixel_encoder_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (encoder == NULL) { + sixel_helper_set_additional_message( + "sixel_encoder_encode: sixel_encoder_create() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + } else { + sixel_encoder_ref(encoder); + } + + /* if required color is not set, set the max value */ + if (encoder->reqcolors == (-1)) { + encoder->reqcolors = SIXEL_PALETTE_MAX; + } + + /* if required color is less then 2, set the min value */ + if (encoder->reqcolors < 2) { + encoder->reqcolors = SIXEL_PALETTE_MIN; + } + + /* if color space option is not set, choose RGB color space */ + if (encoder->palette_type == SIXEL_PALETTETYPE_AUTO) { + encoder->palette_type = SIXEL_PALETTETYPE_RGB; + } + + /* if color option is not default value, prohibit to read + the file as a paletted image */ + if (encoder->color_option != SIXEL_COLOR_OPTION_DEFAULT) { + fuse_palette = 0; + } + + /* if scaling options are set, prohibit to read the file as + a paletted image */ + if (encoder->percentwidth > 0 || + encoder->percentheight > 0 || + encoder->pixelwidth > 0 || + encoder->pixelheight > 0) { + fuse_palette = 0; + } + +reload: + status = sixel_helper_load_image_file(filename, + encoder->fstatic, + fuse_palette, + encoder->reqcolors, + encoder->bgcolor, + encoder->loop_mode, + load_image_callback, + encoder->finsecure, + encoder->cancel_flag, + (void *)encoder, + encoder->allocator); + if (status != SIXEL_OK) { + goto end; + } + + if (encoder->pipe_mode) { +#if HAVE_CLEARERR + clearerr(stdin); +#endif /* HAVE_FSEEK */ + while (encoder->cancel_flag && !*encoder->cancel_flag) { + status = sixel_tty_wait_stdin(1000000); + if (SIXEL_FAILED(status)) { + goto end; + } + if (status != SIXEL_OK) { + break; + } + } + if (!encoder->cancel_flag || !*encoder->cancel_flag) { + goto reload; + } + } + + /* the status may not be SIXEL_OK */ + +end: + sixel_encoder_unref(encoder); + + return status; +} + + +/* encode specified pixel data to SIXEL format + * output to encoder->outfd */ +SIXELAPI SIXELSTATUS +sixel_encoder_encode_bytes( + sixel_encoder_t /* in */ *encoder, + unsigned char /* in */ *bytes, + int /* in */ width, + int /* in */ height, + int /* in */ pixelformat, + unsigned char /* in */ *palette, + int /* in */ ncolors) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_frame_t *frame; + + if (encoder == NULL || bytes == NULL) { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + status = sixel_frame_new(&frame, encoder->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = sixel_frame_init(frame, bytes, width, height, + pixelformat, palette, ncolors); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = sixel_encoder_encode_frame(encoder, frame, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + sixel_encoder_t *encoder = NULL; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + encoder = sixel_encoder_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (encoder == NULL) { + goto error; + } + sixel_encoder_ref(encoder); + sixel_encoder_unref(encoder); + nret = EXIT_SUCCESS; + +error: + sixel_encoder_unref(encoder); + return nret; +} + + +static int +test2(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + sixel_encoder_t *encoder = NULL; + sixel_frame_t *frame = NULL; + unsigned char *buffer; + int height = 0; + int is_animation = 0; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + encoder = sixel_encoder_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (encoder == NULL) { + goto error; + } + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + frame = sixel_frame_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (encoder == NULL) { + goto error; + } + + buffer = (unsigned char *)sixel_allocator_malloc(encoder->allocator, 3); + if (buffer == NULL) { + goto error; + } + status = sixel_frame_init(frame, buffer, 1, 1, + SIXEL_PIXELFORMAT_RGB888, + NULL, 0); + if (SIXEL_FAILED(status)) { + goto error; + } + + if (sixel_frame_get_loop_no(frame) != 0 || sixel_frame_get_frame_no(frame) != 0) { + is_animation = 1; + } + + height = sixel_frame_get_height(frame); + + status = sixel_tty_scroll(sixel_write_callback, encoder->outfd, height, is_animation); + if (SIXEL_FAILED(status)) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + sixel_encoder_unref(encoder); + sixel_frame_unref(frame); + return nret; +} + + +static int +test3(void) +{ + int nret = EXIT_FAILURE; + int result; + + result = sixel_tty_wait_stdin(1000); + if (result != 0) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test4(void) +{ + int nret = EXIT_FAILURE; + sixel_encoder_t *encoder = NULL; + SIXELSTATUS status; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + encoder = sixel_encoder_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (encoder == NULL) { + goto error; + } + + status = sixel_encoder_setopt(encoder, + SIXEL_OPTFLAG_LOOPMODE, + "force"); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_encoder_setopt(encoder, + SIXEL_OPTFLAG_PIPE_MODE, + "force"); + if (SIXEL_FAILED(status)) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + sixel_encoder_unref(encoder); + return nret; +} + + +static int +test5(void) +{ + int nret = EXIT_FAILURE; + sixel_encoder_t *encoder = NULL; + sixel_allocator_t *allocator = NULL; + SIXELSTATUS status; + + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_encoder_new(&encoder, allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + sixel_encoder_ref(encoder); + sixel_encoder_unref(encoder); + nret = EXIT_SUCCESS; + +error: + sixel_encoder_unref(encoder); + return nret; +} + + +SIXELAPI int +sixel_encoder_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + test3, + test4, + test5 + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/encoder.h b/ThirdParty/libsixel/src/encoder.h new file mode 100644 index 0000000000..363fe85979 --- /dev/null +++ b/ThirdParty/libsixel/src/encoder.h @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_ENCODER_H +#define LIBSIXEL_ENCODER_H + +/* palette type */ +#define SIXEL_COLOR_OPTION_DEFAULT 0 /* use default settings */ +#define SIXEL_COLOR_OPTION_MONOCHROME 1 /* use monochrome palette */ +#define SIXEL_COLOR_OPTION_BUILTIN 2 /* use builtin palette */ +#define SIXEL_COLOR_OPTION_MAPFILE 3 /* use mapfile option */ +#define SIXEL_COLOR_OPTION_HIGHCOLOR 4 /* use highcolor option */ + +/* encoder object */ +struct sixel_encoder { + unsigned int ref; /* reference counter */ + sixel_allocator_t *allocator; /* allocator object */ + int reqcolors; + int color_option; + char *mapfile; + int builtin_palette; + int method_for_diffuse; + int method_for_largest; + int method_for_rep; + int quality_mode; + int method_for_resampling; + int loop_mode; + int palette_type; + int f8bit; + int finvert; + int fuse_macro; + int fignore_delay; + int complexion; + int fstatic; + int pixelwidth; + int pixelheight; + int percentwidth; + int percentheight; + int clipx; + int clipy; + int clipwidth; + int clipheight; + int clipfirst; + int macro_number; + int penetrate_multiplexer; + int encode_policy; + int pipe_mode; + int verbose; + int has_gri_arg_limit; + unsigned char *bgcolor; + int outfd; + int finsecure; + int *cancel_flag; + void *dither_cache; +}; + +#if HAVE_TESTS +int +sixel_encoder_tests_main(void); +#endif + +#endif /* LIBSIXEL_ENCODER_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/frame.c b/ThirdParty/libsixel/src/frame.c new file mode 100644 index 0000000000..22b95bf4fb --- /dev/null +++ b/ThirdParty/libsixel/src/frame.c @@ -0,0 +1,1152 @@ +/* + * Copyright (c) 2014-2020 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_MATH_H +# include +#endif /* HAVE_MATH_H */ +#if HAVE_LIMITS_H +# include +#endif /* HAVE_LIMITS_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_INTTYPES_H */ + +#include "frame.h" + +#if !defined(HAVE_MEMMOVE) +# define memmove(d, s, n) (bcopy ((s), (d), (n))) +#endif + +/* constructor of frame object */ +SIXELAPI SIXELSTATUS +sixel_frame_new( + sixel_frame_t /* out */ **ppframe, /* frame object to be created */ + sixel_allocator_t /* in */ *allocator) /* allocator, null if you use + default allocator */ +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (allocator == NULL) { + status = sixel_allocator_new(&allocator, malloc, calloc, realloc, free); + if (SIXEL_FAILED(status)) { + goto end; + } + } + + *ppframe = (sixel_frame_t *)sixel_allocator_malloc(allocator, sizeof(sixel_frame_t)); + if (*ppframe == NULL) { + sixel_helper_set_additional_message( + "sixel_frame_resize: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + (*ppframe)->ref = 1; + (*ppframe)->pixels = NULL; + (*ppframe)->palette = NULL; + (*ppframe)->width = 0; + (*ppframe)->height = 0; + (*ppframe)->ncolors = (-1); + (*ppframe)->pixelformat = SIXEL_PIXELFORMAT_RGB888; + (*ppframe)->delay = 0; + (*ppframe)->frame_no = 0; + (*ppframe)->loop_count = 0; + (*ppframe)->multiframe = 0; + (*ppframe)->transparent = (-1); + (*ppframe)->allocator = allocator; + + sixel_allocator_ref(allocator); + + status = SIXEL_OK; + +end: + return status; +} + + +SIXELAPI /* deprecated */ sixel_frame_t * +sixel_frame_create(void) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_frame_t *frame = NULL; + + status = sixel_frame_new(&frame, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + return frame; +} + + +static void +sixel_frame_destroy(sixel_frame_t /* in */ *frame) +{ + sixel_allocator_t *allocator = NULL; + + if (frame) { + allocator = frame->allocator; + sixel_allocator_free(allocator, frame->pixels); + sixel_allocator_free(allocator, frame->palette); + sixel_allocator_free(allocator, frame); + sixel_allocator_unref(allocator); + } +} + + +/* increase reference count of frame object (thread-unsafe) */ +SIXELAPI void +sixel_frame_ref(sixel_frame_t *frame) +{ + /* TODO: be thread safe */ + ++frame->ref; +} + + +/* decrease reference count of frame object (thread-unsafe) */ +SIXELAPI void +sixel_frame_unref(sixel_frame_t *frame) +{ + /* TODO: be thread safe */ + if (frame != NULL && --frame->ref == 0) { + sixel_frame_destroy(frame); + } +} + + +/* initialize frame object with a pixel buffer */ +SIXELAPI SIXELSTATUS +sixel_frame_init( + sixel_frame_t /* in */ *frame, /* frame object to be initialize */ + unsigned char /* in */ *pixels, /* pixel buffer */ + int /* in */ width, /* pixel width of buffer */ + int /* in */ height, /* pixel height of buffer */ + int /* in */ pixelformat, /* pixelformat of buffer */ + unsigned char /* in */ *palette, /* palette for buffer or NULL */ + int /* in */ ncolors /* number of palette colors or (-1) */ +) +{ + SIXELSTATUS status = SIXEL_FALSE; + + sixel_frame_ref(frame); + + /* check parameters */ + if (width <= 0) { + sixel_helper_set_additional_message( + "sixel_frame_init: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height <= 0) { + sixel_helper_set_additional_message( + "sixel_frame_init: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (width > SIXEL_WIDTH_LIMIT) { + sixel_helper_set_additional_message( + "sixel_frame_init: given width parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height > SIXEL_HEIGHT_LIMIT) { + sixel_helper_set_additional_message( + "sixel_frame_init: given height parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + + frame->pixels = pixels; + frame->width = width; + frame->height = height; + frame->pixelformat = pixelformat; + frame->palette = palette; + frame->ncolors = ncolors; + + status = SIXEL_OK; + +end: + sixel_frame_unref(frame); + + return status; +} + + +/* get pixels */ +SIXELAPI unsigned char * +sixel_frame_get_pixels(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->pixels; +} + + +/* get palette */ +SIXELAPI unsigned char * +sixel_frame_get_palette(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->palette; +} + + +/* get width */ +SIXELAPI int +sixel_frame_get_width(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->width; +} + + +/* get height */ +SIXELAPI int +sixel_frame_get_height(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->height; +} + + +/* get ncolors */ +SIXELAPI int +sixel_frame_get_ncolors(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->ncolors; +} + + +/* get pixelformat */ +SIXELAPI int +sixel_frame_get_pixelformat(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->pixelformat; +} + + +/* get transparent */ +SIXELAPI int +sixel_frame_get_transparent(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->transparent; +} + + +/* get transparent */ +SIXELAPI int +sixel_frame_get_multiframe(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->multiframe; +} + + +/* get delay */ +SIXELAPI int +sixel_frame_get_delay(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->delay; +} + + +/* get frame no */ +SIXELAPI int +sixel_frame_get_frame_no(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->frame_no; +} + + +/* get loop no */ +SIXELAPI int +sixel_frame_get_loop_no(sixel_frame_t /* in */ *frame) /* frame object */ +{ + return frame->loop_count; +} + + +/* strip alpha from RGBA/ARGB/BGRA/ABGR formatted pixbuf */ +SIXELAPI SIXELSTATUS +sixel_frame_strip_alpha( + sixel_frame_t /* in */ *frame, + unsigned char /* in */ *bgcolor +) +{ + SIXELSTATUS status = SIXEL_FALSE; + int i; + unsigned char *src; + unsigned char *dst; + unsigned char alpha; + + sixel_frame_ref(frame); + + src = dst = frame->pixels; + + if (bgcolor) { + switch (frame->pixelformat) { + case SIXEL_PIXELFORMAT_ARGB8888: + for (i = 0; i < frame->height * frame->width; i++) { + alpha = src[0]; + *dst++ = (*src++ * alpha + bgcolor[0] * (0xff - alpha)) >> 8; + *dst++ = (*src++ * alpha + bgcolor[1] * (0xff - alpha)) >> 8; + *dst++ = (*src++ * alpha + bgcolor[2] * (0xff - alpha)) >> 8; + src++; + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_RGBA8888: + for (i = 0; i < frame->height * frame->width; i++) { + alpha = src[3]; + *dst++ = (*src++ * alpha + bgcolor[0] * (0xff - alpha)) >> 8; + *dst++ = (*src++ * alpha + bgcolor[1] * (0xff - alpha)) >> 8; + *dst++ = (*src++ * alpha + bgcolor[2] * (0xff - alpha)) >> 8; + src++; + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_ABGR8888: + for (i = 0; i < frame->height * frame->width; i++) { + alpha = src[0]; + *dst++ = (src[3] * alpha + bgcolor[0] * (0xff - alpha)) >> 8; + *dst++ = (src[2] * alpha + bgcolor[1] * (0xff - alpha)) >> 8; + *dst++ = (src[1] * alpha + bgcolor[2] * (0xff - alpha)) >> 8; + src += 4; + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_BGRA8888: + for (i = 0; i < frame->height * frame->width; i++) { + alpha = src[3]; + *dst++ = (src[2] * alpha + bgcolor[0] * (0xff - alpha)) >> 8; + *dst++ = (src[1] * alpha + bgcolor[1] * (0xff - alpha)) >> 8; + *dst++ = (src[0] * alpha + bgcolor[2] * (0xff - alpha)) >> 8; + src += 4; + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + default: + break; + } + } else { + switch (frame->pixelformat) { + case SIXEL_PIXELFORMAT_ARGB8888: + for (i = 0; i < frame->height * frame->width; i++) { + src++; /* A */ + *dst++ = *src++; /* R */ + *dst++ = *src++; /* G */ + *dst++ = *src++; /* B */ + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_RGBA8888: + for (i = 0; i < frame->height * frame->width; i++) { + *dst++ = *src++; /* R */ + *dst++ = *src++; /* G */ + *dst++ = *src++; /* B */ + src++; /* A */ + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_ABGR8888: + for (i = 0; i < frame->height * frame->width; i++) { + *dst++ = src[3]; /* R */ + *dst++ = src[2]; /* G */ + *dst++ = src[1]; /* B */ + src += 4; + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_BGRA8888: + for (i = 0; i < frame->height * frame->width; i++) { + *dst++ = src[2]; /* R */ + *dst++ = src[1]; /* G */ + *dst++ = src[0]; /* B */ + src += 4; + } + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + default: + break; + } + } + + status = SIXEL_OK; + + sixel_frame_unref(frame); + + return status; +} + + +static SIXELSTATUS +sixel_frame_convert_to_rgb888(sixel_frame_t /*in */ *frame) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char *normalized_pixels = NULL; + size_t size; + unsigned char *dst; + unsigned char *src; + unsigned char *p; + + sixel_frame_ref(frame); + + switch (frame->pixelformat) { + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + size = (size_t)(frame->width * frame->height * 4); + normalized_pixels = (unsigned char *)sixel_allocator_malloc(frame->allocator, size); + if (normalized_pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_frame_convert_to_rgb888: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + src = normalized_pixels + frame->width * frame->height * 3; + dst = normalized_pixels; + status = sixel_helper_normalize_pixelformat(src, + &frame->pixelformat, + frame->pixels, + frame->pixelformat, + frame->width, + frame->height); + if (SIXEL_FAILED(status)) { + sixel_allocator_free(frame->allocator, normalized_pixels); + goto end; + } + for (p = src; dst < src; ++p) { + *dst++ = *(frame->palette + *p * 3 + 0); + *dst++ = *(frame->palette + *p * 3 + 1); + *dst++ = *(frame->palette + *p * 3 + 2); + } + sixel_allocator_free(frame->allocator, frame->pixels); + frame->pixels = normalized_pixels; + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_PAL8: + size = (size_t)(frame->width * frame->height * 3); + normalized_pixels = (unsigned char *)sixel_allocator_malloc(frame->allocator, size); + if (normalized_pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_frame_convert_to_rgb888: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + src = frame->pixels; + dst = normalized_pixels; + for (; dst != normalized_pixels + size; ++src) { + *dst++ = frame->palette[*src * 3 + 0]; + *dst++ = frame->palette[*src * 3 + 1]; + *dst++ = frame->palette[*src * 3 + 2]; + } + sixel_allocator_free(frame->allocator, frame->pixels); + frame->pixels = normalized_pixels; + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_RGB888: + break; + case SIXEL_PIXELFORMAT_G8: + case SIXEL_PIXELFORMAT_GA88: + case SIXEL_PIXELFORMAT_AG88: + case SIXEL_PIXELFORMAT_RGB555: + case SIXEL_PIXELFORMAT_RGB565: + case SIXEL_PIXELFORMAT_BGR555: + case SIXEL_PIXELFORMAT_BGR565: + case SIXEL_PIXELFORMAT_RGBA8888: + case SIXEL_PIXELFORMAT_ARGB8888: + /* normalize pixelformat */ + size = (size_t)(frame->width * frame->height * 3); + normalized_pixels = (unsigned char *)sixel_allocator_malloc(frame->allocator, size); + if (normalized_pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_frame_convert_to_rgb888: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + status = sixel_helper_normalize_pixelformat(normalized_pixels, + &frame->pixelformat, + frame->pixels, + frame->pixelformat, + frame->width, + frame->height); + if (SIXEL_FAILED(status)) { + sixel_allocator_free(frame->allocator, normalized_pixels); + goto end; + } + sixel_allocator_free(frame->allocator, frame->pixels); + frame->pixels = normalized_pixels; + break; + default: + status = SIXEL_LOGIC_ERROR; + sixel_helper_set_additional_message( + "do_resize: invalid pixelformat."); + goto end; + } + + status = SIXEL_OK; + +end: + sixel_frame_unref(frame); + + return status; +} + +/* resize a frame to given size with specified resampling filter */ +SIXELAPI SIXELSTATUS +sixel_frame_resize( + sixel_frame_t *frame, + int width, + int height, + int method_for_resampling +) +{ + SIXELSTATUS status = SIXEL_FALSE; + size_t size; + unsigned char *scaled_frame = NULL; + + sixel_frame_ref(frame); + + /* check parameters */ + if (width <= 0) { + sixel_helper_set_additional_message( + "sixel_frame_resize: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height <= 0) { + sixel_helper_set_additional_message( + "sixel_frame_resize: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (width > SIXEL_WIDTH_LIMIT) { + sixel_helper_set_additional_message( + "sixel_frame_resize: given width parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height > SIXEL_HEIGHT_LIMIT) { + sixel_helper_set_additional_message( + "sixel_frame_resize: given height parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + + status = sixel_frame_convert_to_rgb888(frame); + if (SIXEL_FAILED(status)) { + goto end; + } + + size = (size_t)width * (size_t)height * 3UL; + scaled_frame = (unsigned char *)sixel_allocator_malloc(frame->allocator, size); + if (scaled_frame == NULL) { + sixel_helper_set_additional_message( + "sixel_frame_resize: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + status = sixel_helper_scale_image( + scaled_frame, + frame->pixels, + frame->width, + frame->height, + 3, + width, + height, + method_for_resampling, + frame->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + sixel_allocator_free(frame->allocator, frame->pixels); + frame->pixels = scaled_frame; + frame->width = width; + frame->height = height; + + status = SIXEL_OK; + +end: + sixel_frame_unref(frame); + + return status; +} + + +static SIXELSTATUS +clip(unsigned char *pixels, + int sx, + int sy, + int pixelformat, + int cx, + int cy, + int cw, + int ch) +{ + SIXELSTATUS status = SIXEL_FALSE; + int y; + unsigned char *src; + unsigned char *dst; + int depth; + char message[256]; + int nwrite; + + /* unused */ (void) sx; + /* unused */ (void) sy; + /* unused */ (void) cx; + + switch (pixelformat) { + case SIXEL_PIXELFORMAT_PAL8: + case SIXEL_PIXELFORMAT_G8: + case SIXEL_PIXELFORMAT_RGB888: + depth = sixel_helper_compute_depth(pixelformat); + if (depth < 0) { + status = SIXEL_LOGIC_ERROR; + nwrite = sprintf(message, + "clip: " + "sixel_helper_compute_depth(%08x) failed.", + pixelformat); + if (nwrite > 0) { + sixel_helper_set_additional_message(message); + } + goto end; + } + + dst = pixels; + src = pixels + cy * sx * depth + cx * depth; + for (y = 0; y < ch; y++) { + memmove(dst, src, (size_t)(cw * depth)); + dst += (cw * depth); + src += (sx * depth); + } + + status = SIXEL_OK; + + break; + default: + status = SIXEL_BAD_ARGUMENT; + nwrite = sprintf(message, + "clip: " + "invalid pixelformat(%08x) is specified.", + pixelformat); + if (nwrite > 0) { + sixel_helper_set_additional_message(message); + } + break; + } + +end: + return status; +} + + +/* clip frame */ +SIXELAPI SIXELSTATUS +sixel_frame_clip( + sixel_frame_t *frame, + int x, + int y, + int width, + int height +) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char *normalized_pixels; + + sixel_frame_ref(frame); + + /* check parameters */ + if (width <= 0) { + sixel_helper_set_additional_message( + "sixel_frame_clip: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height <= 0) { + sixel_helper_set_additional_message( + "sixel_frame_clip: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (width > SIXEL_WIDTH_LIMIT) { + sixel_helper_set_additional_message( + "sixel_frame_clip: given width parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height > SIXEL_HEIGHT_LIMIT) { + sixel_helper_set_additional_message( + "sixel_frame_clip: given height parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + + switch (frame->pixelformat) { + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + case SIXEL_PIXELFORMAT_G1: + case SIXEL_PIXELFORMAT_G2: + case SIXEL_PIXELFORMAT_G4: + normalized_pixels = (unsigned char *)sixel_allocator_malloc(frame->allocator, + (size_t)(frame->width * frame->height)); + status = sixel_helper_normalize_pixelformat(normalized_pixels, + &frame->pixelformat, + frame->pixels, + frame->pixelformat, + frame->width, + frame->height); + if (SIXEL_FAILED(status)) { + sixel_allocator_free(frame->allocator, normalized_pixels); + goto end; + } + sixel_allocator_free(frame->allocator, frame->pixels); + frame->pixels = normalized_pixels; + break; + default: + break; + } + + status = clip(frame->pixels, + frame->width, + frame->height, + frame->pixelformat, + x, + y, + width, + height); + if (SIXEL_FAILED(status)) { + goto end; + } + frame->width = width; + frame->height = height; + + status = SIXEL_OK; + +end: + sixel_frame_unref(frame); + + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + sixel_frame_t *frame = NULL; + int nret = EXIT_FAILURE; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + frame = sixel_frame_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (frame == NULL) { + goto error; + } + sixel_frame_ref(frame); + sixel_frame_unref(frame); + nret = EXIT_SUCCESS; + +error: + sixel_frame_unref(frame); + return nret; +} + + +static int +test2(void) +{ + sixel_frame_t *frame = NULL; + int nret = EXIT_FAILURE; + unsigned char *pixels = malloc(4); + unsigned char *bgcolor = malloc(3); + SIXELSTATUS status; + + pixels[0] = 0x43; + pixels[1] = 0x89; + pixels[2] = 0x97; + pixels[3] = 0x32; + + memset(bgcolor, 0x10, 3); + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + frame = sixel_frame_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + + if (frame == NULL) { + goto error; + } + + status = sixel_frame_init(frame, + pixels, + 1, + 1, + SIXEL_PIXELFORMAT_RGBA8888, + NULL, + 0); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_frame_strip_alpha(frame, bgcolor); + if (SIXEL_FAILED(status)) { + goto error; + } + + if (frame->pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + + if (frame->pixels[0] != (0x43 * 0x32 + 0x10 * (0xff - 0x32)) >> 8) { + goto error; + } + + if (frame->pixels[1] != (0x89 * 0x32 + 0x10 * (0xff - 0x32)) >> 8) { + goto error; + } + + if (frame->pixels[2] != (0x97 * 0x32 + 0x10 * (0xff - 0x32)) >> 8) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + sixel_frame_unref(frame); + return nret; +} + + +static int +test3(void) +{ + sixel_frame_t *frame = NULL; + int nret = EXIT_FAILURE; + unsigned char *pixels = malloc(4); + SIXELSTATUS status; + + pixels[0] = 0x43; + pixels[1] = 0x89; + pixels[2] = 0x97; + pixels[3] = 0x32; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + frame = sixel_frame_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (frame == NULL) { + goto error; + } + + status = sixel_frame_init(frame, + pixels, + 1, + 1, + SIXEL_PIXELFORMAT_RGBA8888, + NULL, + 0); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_frame_strip_alpha(frame, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + if (frame->pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + + if (frame->pixels[0] != 0x43) { + goto error; + } + + if (frame->pixels[1] != 0x89) { + goto error; + } + + if (frame->pixels[2] != 0x97) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + sixel_frame_unref(frame); + return nret; +} + + +static int +test4(void) +{ + sixel_frame_t *frame = NULL; + int nret = EXIT_FAILURE; + unsigned char *pixels = malloc(4); + SIXELSTATUS status; + + pixels[0] = 0x43; + pixels[1] = 0x89; + pixels[2] = 0x97; + pixels[3] = 0x32; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + frame = sixel_frame_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (frame == NULL) { + goto error; + } + + status = sixel_frame_init(frame, + pixels, + 1, + 1, + SIXEL_PIXELFORMAT_ARGB8888, + NULL, + 0); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_frame_strip_alpha(frame, NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + if (frame->pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + + if (frame->pixels[0] != 0x89) { + goto error; + } + + if (frame->pixels[1] != 0x97) { + goto error; + } + + if (frame->pixels[2] != 0x32) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + sixel_frame_unref(frame); + return nret; +} + + +static int +test5(void) +{ + sixel_frame_t *frame = NULL; + int nret = EXIT_FAILURE; + unsigned char *pixels = malloc(1); + unsigned char *palette = malloc(3); + SIXELSTATUS status; + + palette[0] = 0x43; + palette[1] = 0x89; + palette[2] = 0x97; + + pixels[0] = 0; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + frame = sixel_frame_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (frame == NULL) { + goto error; + } + + status = sixel_frame_init(frame, + pixels, + 1, + 1, + SIXEL_PIXELFORMAT_PAL8, + palette, + 1); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_frame_convert_to_rgb888(frame); + if (SIXEL_FAILED(status)) { + goto error; + } + + if (frame->pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + + if (frame->pixels[0] != 0x43) { + goto error; + } + + if (frame->pixels[1] != 0x89) { + goto error; + } + + if (frame->pixels[2] != 0x97) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + sixel_frame_unref(frame); + return nret; +} + + +static int +test6(void) +{ + sixel_frame_t *frame = NULL; + int nret = EXIT_FAILURE; + unsigned char *pixels = malloc(6); + unsigned char *palette = malloc(3); + SIXELSTATUS status; + + palette[0] = 0x43; + palette[1] = 0x89; + palette[2] = 0x97; + + pixels[0] = 0; + +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + frame = sixel_frame_create(); +#if HAVE_DIAGNOSTIC_DEPRECATED_DECLARATIONS +# pragma GCC diagnostic pop +#endif + if (frame == NULL) { + goto error; + } + + status = sixel_frame_init(frame, + pixels, + 1, + 1, + SIXEL_PIXELFORMAT_PAL1, + palette, + 1); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_frame_convert_to_rgb888(frame); + if (SIXEL_FAILED(status)) { + goto error; + } + + if (frame->pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + + if (frame->pixels[0] != 0x43) { + goto error; + } + + if (frame->pixels[1] != 0x89) { + goto error; + } + + if (frame->pixels[2] != 0x97) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + sixel_frame_unref(frame); + return nret; +} + + +SIXELAPI int +sixel_frame_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + test3, + test4, + test5, + test6, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/frame.h b/ThirdParty/libsixel/src/frame.h new file mode 100644 index 0000000000..2b932bad96 --- /dev/null +++ b/ThirdParty/libsixel/src/frame.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_FRAME_H +#define LIBSIXEL_FRAME_H + +#include + +/* frame object */ +struct sixel_frame { + unsigned int ref; /* reference counter */ + unsigned char *pixels; /* loaded pixel data */ + unsigned char *palette; /* loaded palette data */ + int width; /* frame width */ + int height; /* frame height */ + int ncolors; /* palette colors */ + int pixelformat; /* one of enum pixelFormat */ + int delay; /* delay in msec */ + int frame_no; /* frame number */ + int loop_count; /* loop count */ + int multiframe; /* whether the image has multiple frames */ + int transparent; /* -1(no transparent) or >= 0(index of transparent color) */ + sixel_allocator_t *allocator; /* allocator object */ +}; + +#ifdef __cplusplus +extern "C" { +#endif + +#if HAVE_TESTS +int +sixel_dither_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_FRAME_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/fromgif.c b/ThirdParty/libsixel/src/fromgif.c new file mode 100644 index 0000000000..11d99b92cc --- /dev/null +++ b/ThirdParty/libsixel/src/fromgif.c @@ -0,0 +1,749 @@ +/* + * This file is derived from "stb_image.h" that is in public domain. + * https://github.com/nothings/stb + * + * Hayaki Saito modified this and re-licensed + * it under the MIT license. + * + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_CTYPE_H +# include +#endif /* HAVE_CTYPE_H */ +#if HAVE_ASSERT_H +# include +#endif /* HAVE_ASSERT_H */ + +#include "frame.h" +#include "fromgif.h" + +/* + * gif_context_t struct and start_xxx functions + * + * gif_context_t structure is our basic context used by all images, so it + * contains all the IO context, plus some basic image information + */ +typedef struct +{ + unsigned int img_x, img_y; + int img_n, img_out_n; + + int buflen; + unsigned char buffer_start[128]; + + unsigned char *img_buffer, *img_buffer_end; + unsigned char *img_buffer_original; +} gif_context_t; + +typedef struct +{ + signed short prefix; + unsigned char first; + unsigned char suffix; +} gif_lzw; + +enum { + gif_lzw_max_code_size = 12 +}; + +typedef struct +{ + int w, h; + unsigned char *out; /* output buffer (always 4 components) */ + int flags, bgindex, ratio, transparent, eflags; + unsigned char pal[256][3]; + unsigned char lpal[256][3]; + gif_lzw codes[1 << gif_lzw_max_code_size]; + unsigned char *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int actual_width, actual_height; + int line_size; + int loop_count; + int delay; + int is_multiframe; + int is_terminated; +} gif_t; + + +/* initialize a memory-decode context */ +static unsigned char +gif_get8(gif_context_t *s) +{ + if (s->img_buffer < s->img_buffer_end) { + return *s->img_buffer++; + } + return 0; +} + + +static int +gif_get16le(gif_context_t *s) +{ + int z = gif_get8(s); + return z + (gif_get8(s) << 8); +} + + +static void +gif_parse_colortable( + gif_context_t /* in */ *s, + unsigned char /* in */ pal[256][3], + int /* in */ num_entries) +{ + int i; + + for (i = 0; i < num_entries; ++i) { + pal[i][2] = gif_get8(s); + pal[i][1] = gif_get8(s); + pal[i][0] = gif_get8(s); + } +} + + +static SIXELSTATUS +gif_load_header( + gif_context_t /* in */ *s, + gif_t /* in */ *g) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char version; + if (gif_get8(s) != 'G') { + goto end; + } + if (gif_get8(s) != 'I') { + goto end; + } + if (gif_get8(s) != 'F') { + goto end; + } + if (gif_get8(s) != '8') { + goto end; + } + + version = gif_get8(s); + + if (version != '7' && version != '9') { + goto end; + } + if (gif_get8(s) != 'a') { + goto end; + } + + g->w = gif_get16le(s); + g->h = gif_get16le(s); + g->flags = gif_get8(s); + g->bgindex = gif_get8(s); + g->ratio = gif_get8(s); + g->transparent = (-1); + g->loop_count = (-1); + + if (g->flags & 0x80) { + gif_parse_colortable(s, g->pal, 2 << (g->flags & 7)); + } + + status = SIXEL_OK; + +end: + return status; +} + + +static SIXELSTATUS +gif_init_frame( + sixel_frame_t /* in */ *frame, + gif_t /* in */ *pg, + unsigned char /* in */ *bgcolor, + int /* in */ reqcolors, + int /* in */ fuse_palette) +{ + SIXELSTATUS status = SIXEL_OK; + int i; + int ncolors; + size_t palette_size, frame_size; + + frame->delay = pg->delay; + ncolors = 2 << (((pg->lflags & 0x80) ? pg->lflags : pg->flags) & 7); + palette_size = (size_t)ncolors * 3; + if (frame->palette == NULL) { + frame->palette = (unsigned char *)sixel_allocator_malloc(frame->allocator, palette_size); + } else if (frame->ncolors < ncolors) { + sixel_allocator_free(frame->allocator, frame->palette); + frame->palette = (unsigned char *)sixel_allocator_malloc(frame->allocator, palette_size); + } + if (frame->palette == NULL) { + sixel_helper_set_additional_message( + "gif_init_frame: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + frame->ncolors = ncolors; + if (frame->ncolors <= reqcolors && fuse_palette) { + frame->pixelformat = SIXEL_PIXELFORMAT_PAL8; + sixel_allocator_free(frame->allocator, frame->pixels); + frame_size = (size_t)frame->width * (size_t)frame->height; + frame->pixels = (unsigned char *)sixel_allocator_malloc(frame->allocator, frame_size); + if (frame->pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_allocator_malloc() failed in gif_init_frame()."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + memcpy(frame->pixels, pg->out, frame_size); + + for (i = 0; i < frame->ncolors; ++i) { + frame->palette[i * 3 + 0] = pg->color_table[i * 3 + 2]; + frame->palette[i * 3 + 1] = pg->color_table[i * 3 + 1]; + frame->palette[i * 3 + 2] = pg->color_table[i * 3 + 0]; + } + if (pg->lflags & 0x80) { + if (pg->eflags & 0x01) { + if (bgcolor) { + frame->palette[pg->transparent * 3 + 0] = bgcolor[0]; + frame->palette[pg->transparent * 3 + 1] = bgcolor[1]; + frame->palette[pg->transparent * 3 + 2] = bgcolor[2]; + } else { + frame->transparent = pg->transparent; + } + } + } else if (pg->flags & 0x80) { + if (pg->eflags & 0x01) { + if (bgcolor) { + frame->palette[pg->transparent * 3 + 0] = bgcolor[0]; + frame->palette[pg->transparent * 3 + 1] = bgcolor[1]; + frame->palette[pg->transparent * 3 + 2] = bgcolor[2]; + } else { + frame->transparent = pg->transparent; + } + } + } + } else { + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + frame_size = (size_t)pg->w * (size_t)pg->h * 3; + frame->pixels = (unsigned char *)sixel_allocator_malloc(frame->allocator, frame_size); + if (frame->pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_allocator_malloc() failed in gif_init_frame()."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + for (i = 0; i < pg->w * pg->h; ++i) { + frame->pixels[i * 3 + 0] = pg->color_table[pg->out[i] * 3 + 2]; + frame->pixels[i * 3 + 1] = pg->color_table[pg->out[i] * 3 + 1]; + frame->pixels[i * 3 + 2] = pg->color_table[pg->out[i] * 3 + 0]; + } + } + frame->multiframe = (pg->loop_count != (-1)); + + status = SIXEL_OK; + +end: + return status; +} + + +static void +gif_out_code( + gif_t /* in */ *g, + unsigned short /* in */ code +) +{ + /* recurse to decode the prefixes, since the linked-list is backwards, + and working backwards through an interleaved image would be nasty */ + if (g->codes[code].prefix >= 0) { + gif_out_code(g, (unsigned short)g->codes[code].prefix); + } + + if (g->cur_y >= g->max_y) { + return; + } + + g->out[g->cur_x + g->cur_y * g->max_x] = g->codes[code].suffix; + if (g->cur_x >= g->actual_width) { + g->actual_width = g->cur_x + 1; + } + if (g->cur_y >= g->actual_height) { + g->actual_height = g->cur_y + 1; + } + + g->cur_x++; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = 1 << g->parse; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + + +static SIXELSTATUS +gif_process_raster( + gif_context_t /* in */ *s, + gif_t /* in */ *g +) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char lzw_cs; + signed int len, code; + signed int codesize, codemask, avail, oldcode, bits, valid_bits, clear; + gif_lzw *p; + + /* LZW Minimum Code Size */ + lzw_cs = gif_get8(s); + if (lzw_cs > gif_lzw_max_code_size) { + sixel_helper_set_additional_message( + "Unsupported GIF (LZW code size)"); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + clear = 1 << lzw_cs; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (code = 0; code < clear; code++) { + g->codes[code].prefix = -1; + g->codes[code].first = (unsigned char) code; + g->codes[code].suffix = (unsigned char) code; + } + + /* support no starting clear code */ + avail = clear + 2; + oldcode = (-1); + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = gif_get8(s); /* start new block */ + if (len == 0) { + return SIXEL_OK; + } + } + --len; + bits |= (signed int) gif_get8(s) << valid_bits; + valid_bits += 8; + } else { + code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + /* @OPTIMIZE: is there some way we can accelerate the non-clear path? */ + if (code == clear) { /* clear code */ + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + } else if (code == clear + 1) { /* end of stream code */ + s->img_buffer += len; + while ((len = gif_get8(s)) > 0) { + s->img_buffer += len; + } + return SIXEL_OK; + } else if (code <= avail) { + if (oldcode >= 0) { + if (avail < (1 << gif_lzw_max_code_size)) { + p = &g->codes[avail++]; + p->prefix = (signed short) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } + } else if (code == avail) { + sixel_helper_set_additional_message( + "corrupt GIF (reason: illegal code in raster)."); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + gif_out_code(g, (unsigned short) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + sixel_helper_set_additional_message( + "corrupt GIF (reason: illegal code in raster)."); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + } + } + + status = SIXEL_OK; + +end: + return status; +} + + +/* this function is ported from stb_image.h */ +static SIXELSTATUS +gif_load_next( + gif_context_t /* in */ *s, + gif_t /* in */ *g, + unsigned char /* in */ *bgcolor +) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char buffer[256]; + unsigned char c; + int x; + int y; + int w; + int h; + int len; + + for (;;) { + switch ((c = gif_get8(s))) { + case 0x2C: /* Image Separator (1 byte) */ + x = gif_get16le(s); /* Image Left Position (2 bytes)*/ + y = gif_get16le(s); /* Image Top Position (2 bytes) */ + w = gif_get16le(s); /* Image Width (2 bytes) */ + h = gif_get16le(s); /* Image Height (2 bytes) */ + if (x >= g->w || y >= g->h || x + w > g->w || y + h > g->h) { + sixel_helper_set_additional_message( + "corrupt GIF (reason: bad Image Separator)."); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + g->line_size = g->w; + g->start_x = x; + g->start_y = y; + g->max_x = g->start_x + w; + g->max_y = g->start_y + h; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + g->actual_width = g->start_x; + g->actual_height = g->start_y; + + /* Packed Fields (1 byte) + * +-+-+-+--+---+ + * | | | | | | + * +-+-+-+--+---+ + * | | | | | + * | | | | +- Size of Local Color Table (3 bits) + * | | | +- Reserved (2 bits) + * | | +- Sort Flag (1 bit) + * | +- Interlace Flag (1 bit) + * +- Local Color Table Flag (1 bit) + */ + g->lflags = gif_get8(s); + + /* Interlace Flag */ + if (g->lflags & 0x40) { + g->step = 8; /* first interlaced spacing */ + g->parse = 3; + } else { + g->step = 1; + g->parse = 0; + } + + /* Local Color Table Flag */ + if (g->lflags & 0x80) { + gif_parse_colortable(s, + g->lpal, + 2 << (g->lflags & 7)); + g->color_table = (unsigned char *) g->lpal; + } else if (g->flags & 0x80) { + if (g->transparent >= 0 && (g->eflags & 0x01)) { + if (bgcolor) { + g->pal[g->transparent][0] = bgcolor[2]; + g->pal[g->transparent][1] = bgcolor[1]; + g->pal[g->transparent][2] = bgcolor[0]; + } + } + g->color_table = (unsigned char *)g->pal; + } else { + sixel_helper_set_additional_message( + "corrupt GIF (reason: missing color table)."); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + status = gif_process_raster(s, g); + if (SIXEL_FAILED(status)) { + goto end; + } + goto end; + + case 0x21: /* Comment Extension. */ + switch (gif_get8(s)) { + case 0x01: /* Plain Text Extension */ + break; + case 0x21: /* Comment Extension */ + break; + case 0xF9: /* Graphic Control Extension */ + len = gif_get8(s); /* block size */ + if (len == 4) { + g->eflags = gif_get8(s); + g->delay = gif_get16le(s); /* delay */ + g->transparent = gif_get8(s); + } else { + if (s->img_buffer + len > s->img_buffer_end) { + status = SIXEL_RUNTIME_ERROR; + goto end; + } + s->img_buffer += len; + break; + } + break; + case 0xFF: /* Application Extension */ + len = gif_get8(s); /* block size */ + if (s->img_buffer + len > s->img_buffer_end) { + status = SIXEL_RUNTIME_ERROR; + goto end; + } + memcpy(buffer, s->img_buffer, (size_t)len); + s->img_buffer += len; + buffer[len] = 0; + if (len == 11 && strcmp((char *)buffer, "NETSCAPE2.0") == 0) { + if (gif_get8(s) == 0x03) { + /* loop count */ + switch (gif_get8(s)) { + case 0x00: + g->loop_count = 1; + break; + case 0x01: + g->loop_count = gif_get16le(s); + break; + default: + g->loop_count = 1; + break; + } + } + } + break; + default: + len = gif_get8(s); /* block size */ + if (s->img_buffer + len > s->img_buffer_end) { + status = SIXEL_RUNTIME_ERROR; + goto end; + } + memcpy(buffer, s->img_buffer, (size_t)len); + s->img_buffer += len; + break; + } + if ((c = gif_get8(s)) != 0x00) { + sprintf((char *)buffer, "missing valid block terminator (unknown code %02x).", c); + sixel_helper_set_additional_message((char *)buffer); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + break; + + case 0x3B: /* gif stream termination code */ + g->is_terminated = 1; + status = SIXEL_OK; + goto end; + + default: + sprintf((char *)buffer, "corrupt GIF (reason: unknown code %02x).", c); + sixel_helper_set_additional_message((char *)buffer); + status = SIXEL_RUNTIME_ERROR; + goto end; + } + } + + status = SIXEL_OK; + +end: + return status; +} + +typedef union _fn_pointer { + sixel_load_image_function fn; + void * p; +} fn_pointer; + +SIXELSTATUS +load_gif( + unsigned char /* in */ *buffer, + int /* in */ size, + unsigned char /* in */ *bgcolor, + int /* in */ reqcolors, + int /* in */ fuse_palette, + int /* in */ fstatic, + int /* in */ loop_control, + void /* in */ *fn_load, /* callback */ + void /* in */ *context, /* private data for callback */ + sixel_allocator_t /* in */ *allocator) /* allocator object */ +{ + gif_context_t s; + gif_t g; + SIXELSTATUS status = SIXEL_FALSE; + sixel_frame_t *frame; + fn_pointer fnp; + char message[256]; + + fnp.p = fn_load; + + status = sixel_frame_new(&frame, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + s.img_buffer = s.img_buffer_original = (unsigned char *)buffer; + s.img_buffer_end = (unsigned char *)buffer + size; + memset(&g, 0, sizeof(g)); + g.delay = SIXEL_DEFALUT_GIF_DELAY; + status = gif_load_header(&s, &g); + if (status != SIXEL_OK) { + goto end; + } + g.out = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)g.w * (size_t)g.h); + if (g.out == NULL) { + sprintf(message, + "load_gif: sixel_allocator_malloc() failed. size=%zu.", + (size_t)g.max_x * (size_t)g.max_y); + sixel_helper_set_additional_message(message); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + frame->loop_count = 0; + + for (;;) { /* per loop */ + + frame->frame_no = 0; + + s.img_buffer = s.img_buffer_original; + status = gif_load_header(&s, &g); + if (status != SIXEL_OK) { + goto end; + } + + g.is_terminated = 0; + + for (;;) { /* per frame */ + status = gif_load_next(&s, &g, bgcolor); + if (status != SIXEL_OK) { + goto end; + } + if (g.is_terminated) { + break; + } + + frame->width = g.actual_width; + frame->height = g.actual_height; + status = gif_init_frame(frame, &g, bgcolor, reqcolors, fuse_palette); + if (status != SIXEL_OK) { + goto end; + } + + status = fnp.fn(frame, context); + if (status != SIXEL_OK) { + goto end; + } + + if (fstatic) { + goto end; + } + ++frame->frame_no; + } + + ++frame->loop_count; + + if (g.loop_count < 0) { + break; + } + if (loop_control == SIXEL_LOOP_DISABLE || frame->frame_no == 1) { + break; + } + if (loop_control == SIXEL_LOOP_AUTO) { + if (frame->loop_count == g.loop_count) { + break; + } + } + } + +end: + sixel_allocator_free(frame->allocator, g.out); + sixel_frame_unref(frame); + + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + + nret = EXIT_SUCCESS; + + return nret; +} + + +SIXELAPI int +sixel_fromgif_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/fromgif.h b/ThirdParty/libsixel/src/fromgif.h new file mode 100644 index 0000000000..9219a0e5b1 --- /dev/null +++ b/ThirdParty/libsixel/src/fromgif.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_FROMGIF_H +#define LIBSIXEL_FROMGIF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* load gif */ +int +load_gif( + unsigned char /* in */ *buffer, + int /* in */ size, + unsigned char /* in */ *bgcolor, + int /* in */ reqcolors, + int /* in */ fuse_palette, + int /* in */ fstatic, + int /* in */ loop_control, + void /* in */ *fn_load, /* callback */ + void /* in */ *context, /* private data for callback */ + sixel_allocator_t /* in */ *allocator /* allocator object */ +); + +#if HAVE_TESTS +int +sixel_fromgif_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_FROMGIF_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/frompnm.c b/ThirdParty/libsixel/src/frompnm.c new file mode 100644 index 0000000000..7073f9ffa3 --- /dev/null +++ b/ThirdParty/libsixel/src/frompnm.c @@ -0,0 +1,339 @@ +/* + * Copyright (c) 2014 kmiya@culti + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_CTYPE_H +# include +#endif /* HAVE_CTYPE_H */ + +#include + +#define PNM_MAX_WIDTH (1 << 16) +#define PNM_MAX_HEIGHT (1 << 16) +#define PNM_MAX_DEPTH (1 << 16) + +static unsigned char * +pnm_get_line(unsigned char *p, unsigned char *end, unsigned char *line) +{ + int n; + + do { + /* read the line */ + for (n = 0 ; p < end && *p >= ' '; p++) { + if (n < 255) { + line[n++] = *p; + } + } + + /* skip invald characters */ + if (p < end && *p < ' ') { + p++; + } + + line[n] = '\0'; + + } while (line[0] == '#'); + + return p; +} + + +SIXELSTATUS +load_pnm(unsigned char /* in */ *p, + int /* in */ length, + sixel_allocator_t /* in */ *allocator, + unsigned char /* out */ **result, + int /* out */ *psx, + int /* out */ *psy, + unsigned char /* out */ **ppalette, + int /* out */ *pncolors, + int /* out */ *ppixelformat) +{ + SIXELSTATUS status = SIXEL_FALSE; + int n; + int i; + int b; + int x; + int y; + int component[3]; + int ascii; + int maps; + int width; + int height; + int deps; + char message[256]; + unsigned char *s; + unsigned char *end; + unsigned char tmp[256]; + size_t size; + + (void) ppalette; + (void) pncolors; + + width = height = 0; + deps = 1; + + end = p + length; + p = pnm_get_line(p, end, tmp); + *result = NULL; + + if (tmp[0] != 'P') { + status = SIXEL_RUNTIME_ERROR; + sixel_helper_set_additional_message( + "load_pnm: first character is not 'P'."); + goto end; + } + + switch(tmp[1]) { + case '1': + /* Portable bitmap - ASCII */ + ascii = 1; + maps = 0; + break; + case '2': + /* Portable graymap - ASCII */ + ascii = 1; + maps = 1; + break; + case '3': + /* Portable pixmap - ASCII */ + ascii = 1; + maps = 2; + break; + case '4': + /* Portable bitmap - Binary */ + ascii = 0; + maps = 0; + break; + case '5': + /* Portable graymap - Binary */ + ascii = 0; + maps = 1; + break; + case '6': + /* Portable pixmap - Binary */ + ascii = 0; + maps = 2; + break; + default: + goto unknown; + } + + p = pnm_get_line(p, end, tmp); + if (p == end) { + /* check empty content */ + /* Issue 71: https://github.com/saitoha/libsixel/issues/71 */ + goto invalid; + } + + s = tmp; + + /* parse width */ + width = 0; + for (; *s >= '0' && *s <= '9'; ++s) { + width = width * 10 + (*s - '0'); + if (width > PNM_MAX_WIDTH) { + status = SIXEL_RUNTIME_ERROR; + sprintf( + message, + "load_pnm: image width exceeds the limit %d.", + PNM_MAX_WIDTH); + sixel_helper_set_additional_message(message); + goto end; + } + } + + while (*s == ' ') { + s++; + } + + /* parse height */ + height = 0; + for (; *s >= '0' && *s <= '9'; ++s) { + height = height * 10 + (*s - '0'); + if (height > PNM_MAX_HEIGHT) { + status = SIXEL_RUNTIME_ERROR; + sprintf( + message, + "load_pnm: image height exceeds the limit %d.", + PNM_MAX_HEIGHT); + sixel_helper_set_additional_message(message); + goto end; + } + } + + while (*s != '\0') { + s++; + } + + if (maps > 0) { + p = pnm_get_line(p, end, tmp); + if (p == end) { + /* check empty content */ + /* Issue 71: https://github.com/saitoha/libsixel/issues/71 */ + goto invalid; + } + s = tmp; + deps = 0; + for (; *s >= '0' && *s <= '9'; ++s) { + deps = deps * 10 + (*s - '0'); + } + if (deps > PNM_MAX_DEPTH) { + status = SIXEL_RUNTIME_ERROR; + sprintf( + message, + "load_pnm: image depth exceeds the limit %d.", + PNM_MAX_DEPTH); + sixel_helper_set_additional_message(message); + goto end; + } + } + + if (width < 1 || height < 1 || deps < 1) { + goto invalid; + } + + size = (size_t)width * (size_t)height * 3 + 1; + *result = (unsigned char *)sixel_allocator_malloc(allocator, size); + + if (*result == NULL) { + sixel_helper_set_additional_message( + "load_pnm: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + (void) memset(*result, 0, size); + + for (y = 0 ; y < height ; y++) { + for (x = 0 ; x < width ; x++) { + b = (maps == 2 ? 3 : 1); + for (i = 0 ; i < b ; i++) { + if (ascii) { + while (*s == '\0') { + if (p >= end) { + break; + } + p = pnm_get_line(p, end, tmp); + s = tmp; + } + n = 0; + if (maps == 0) { + n = *s == '0'; + if (*s != '\0') + s++; + } else { + while (isdigit(*s) && n >= 0) { + n = n * 10 + (*s++ - '0'); + } + while (*s == ' ') { + s++; + } + } + } else { + if (p >= end) { + break; + } + if (maps == 0) { + n = ((*p << (x & 0x7) >> 0x7) & 1) == 0; + if ((x & 0x7) == 0x7) { + p++; + } + } else { + n = *(p++); + } + } + component[i] = n; + } + if (i < b) { + break; + } + + switch(maps) { + case 0: /* bitmap */ + if (component[0] == 0) { + component[0] = component[1] = component[2] = 0; + } else { + component[0] = component[1] = component[2] = 255; + } + break; + case 1: /* graymap */ + component[0] = component[1] = component[2] = component[0] * 255 / deps; + break; + case 2: /* pixmap */ + component[0] = (component[0] * 255 / deps); + component[1] = (component[1] * 255 / deps); + component[2] = (component[2] * 255 / deps); + break; + default: + goto unknown; + } + + *(*result + (y * width + x) * 3 + 0) = component[0]; + *(*result + (y * width + x) * 3 + 1) = component[1]; + *(*result + (y * width + x) * 3 + 2) = component[2]; + } + } + + *psx = width; + *psy = height; + *ppixelformat = SIXEL_PIXELFORMAT_RGB888; + + status = SIXEL_OK; + goto end; + +unknown: + status = SIXEL_RUNTIME_ERROR; + sixel_helper_set_additional_message( + "load_pnm: unknown ppm format."); + sixel_allocator_free(allocator, *result); + *result = NULL; + goto end; + +invalid: + status = SIXEL_RUNTIME_ERROR; + sixel_helper_set_additional_message( + "load_pnm: invalid data detected."); + sixel_allocator_free(allocator, *result); + *result = NULL; + goto end; + +end: + return status; +} + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/frompnm.h b/ThirdParty/libsixel/src/frompnm.h new file mode 100644 index 0000000000..40d55f395c --- /dev/null +++ b/ThirdParty/libsixel/src/frompnm.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_FROMPNM_H +#define LIBSIXEL_FROMPNM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* exported functions */ +SIXELSTATUS +load_pnm(unsigned char /* in */ *p, + int /* in */ len, + sixel_allocator_t /* in */ *allocator, + unsigned char /* out */ **result, + int /* out */ *psx, + int /* out */ *psy, + unsigned char /* out */ **ppalette, + int /* out */ *pncolors, + int /* out */ *ppixelformat); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_FROMPNM_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/fromsixel.c b/ThirdParty/libsixel/src/fromsixel.c new file mode 100644 index 0000000000..627c8ade38 --- /dev/null +++ b/ThirdParty/libsixel/src/fromsixel.c @@ -0,0 +1,1058 @@ +/* + * This file is derived from "sixel" original version (2014-3-2) + * http://nanno.dip.jp/softlib/man/rlogin/sixel.tar.gz + * + * Initial developer of this file is kmiya@culti. + * + * He distributes it under very permissive license which permits + * useing, copying, modification, redistribution, and all other + * public activities without any restrictions. + * + * He declares this is compatible with MIT/BSD/GPL. + * + * Hayaki Saito modified this and re-licensed + * it to the MIT license. + */ +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_CTYPE_H +# include /* isdigit */ +#endif /* HAVE_CTYPE_H */ +#if HAVE_STRING_H +# include /* memcpy */ +#endif /* HAVE_STRING_H */ +#if HAVE_LIMITS_H +# include +#endif /* HAVE_LIMITS_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_INTTYPES_H */ + +#include +#include "output.h" + +#define SIXEL_RGB(r, g, b) (((r) << 16) + ((g) << 8) + (b)) + +#define PALVAL(n,a,m) (((n) * (a) + ((m) / 2)) / (m)) + +#define SIXEL_XRGB(r,g,b) SIXEL_RGB(PALVAL(r, 255, 100), PALVAL(g, 255, 100), PALVAL(b, 255, 100)) + +#define DECSIXEL_PARAMS_MAX 16 + +static int const sixel_default_color_table[] = { + SIXEL_XRGB(0, 0, 0), /* 0 Black */ + SIXEL_XRGB(20, 20, 80), /* 1 Blue */ + SIXEL_XRGB(80, 13, 13), /* 2 Red */ + SIXEL_XRGB(20, 80, 20), /* 3 Green */ + SIXEL_XRGB(80, 20, 80), /* 4 Magenta */ + SIXEL_XRGB(20, 80, 80), /* 5 Cyan */ + SIXEL_XRGB(80, 80, 20), /* 6 Yellow */ + SIXEL_XRGB(53, 53, 53), /* 7 Gray 50% */ + SIXEL_XRGB(26, 26, 26), /* 8 Gray 25% */ + SIXEL_XRGB(33, 33, 60), /* 9 Blue* */ + SIXEL_XRGB(60, 26, 26), /* 10 Red* */ + SIXEL_XRGB(33, 60, 33), /* 11 Green* */ + SIXEL_XRGB(60, 33, 60), /* 12 Magenta* */ + SIXEL_XRGB(33, 60, 60), /* 13 Cyan* */ + SIXEL_XRGB(60, 60, 33), /* 14 Yellow* */ + SIXEL_XRGB(80, 80, 80), /* 15 Gray 75% */ +}; + + +typedef struct image_buffer { + unsigned char *data; + int width; + int height; + int palette[SIXEL_PALETTE_MAX]; + int ncolors; +} image_buffer_t; + +typedef enum parse_state { + PS_GROUND = 0, + PS_ESC = 1, /* ESC */ + PS_DCS = 2, /* DCS Device Control String Introducer \033P P...P I...I F */ + PS_DECSIXEL = 3, /* DECSIXEL body part ", $, -, ? ... ~ */ + PS_DECGRA = 4, /* DECGRA Set Raster Attributes " Pan; Pad; Ph; Pv */ + PS_DECGRI = 5, /* DECGRI Graphics Repeat Introducer ! Pn Ch */ + PS_DECGCI = 6 /* DECGCI Graphics Color Introducer # Pc; Pu; Px; Py; Pz */ +} parse_state_t; + +typedef struct parser_context { + parse_state_t state; + int pos_x; + int pos_y; + int max_x; + int max_y; + int attributed_pan; + int attributed_pad; + int attributed_ph; + int attributed_pv; + int repeat_count; + int color_index; + int bgindex; + int param; + int nparams; + int params[DECSIXEL_PARAMS_MAX]; +} parser_context_t; + + +/* + * Primary color hues: + * blue: 0 degrees + * red: 120 degrees + * green: 240 degrees + */ +static int +hls_to_rgb(int hue, int lum, int sat) +{ + double min, max; + int r, g, b; + + if (sat == 0) { + r = g = b = lum; + } + + /* https://wikimedia.org/api/rest_v1/media/math/render/svg/17e876f7e3260ea7fed73f69e19c71eb715dd09d */ + max = lum + sat * (1.0 - (lum > 50 ? (((lum << 2) / 100.0) - 1.0): - (2 * (lum / 100.0) - 1.0))) / 2.0; + + /* https://wikimedia.org/api/rest_v1/media/math/render/svg/f6721b57985ad83db3d5b800dc38c9980eedde1d */ + min = lum - sat * (1.0 - (lum > 50 ? (((lum << 2) / 100.0) - 1.0): - (2 * (lum / 100.0) - 1.0))) / 2.0; + + /* sixel hue color ring is roteted -120 degree from nowdays general one. */ + hue = (hue + 240) % 360; + + /* https://wikimedia.org/api/rest_v1/media/math/render/svg/937e8abdab308a22ff99de24d645ec9e70f1e384 */ + switch (hue / 60) { + case 0: /* 0 <= hue < 60 */ + r = max; + g = (min + (max - min) * (hue / 60.0)); + b = min; + break; + case 1: /* 60 <= hue < 120 */ + r = min + (max - min) * ((120 - hue) / 60.0); + g = max; + b = min; + break; + case 2: /* 120 <= hue < 180 */ + r = min; + g = max; + b = (min + (max - min) * ((hue - 120) / 60.0)); + break; + case 3: /* 180 <= hue < 240 */ + r = min; + g = (min + (max - min) * ((240 - hue) / 60.0)); + b = max; + break; + case 4: /* 240 <= hue < 300 */ + r = (min + (max - min) * ((hue - 240) / 60.0)); + g = min; + b = max; + break; + case 5: /* 300 <= hue < 360 */ + r = max; + g = min; + b = (min + (max - min) * ((360 - hue) / 60.0)); + break; + default: +#if HAVE___BUILTIN_UNREACHABLE + __builtin_unreachable(); +#endif + break; + } + + return SIXEL_XRGB(r, g, b); +} + + +static SIXELSTATUS +image_buffer_init( + image_buffer_t *image, + int width, + int height, + int bgindex, + sixel_allocator_t *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + size_t size; + int i; + int n; + int r; + int g; + int b; + + /* check parameters */ + if (width <= 0) { + sixel_helper_set_additional_message( + "image_buffer_init: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height <= 0) { + sixel_helper_set_additional_message( + "image_buffer_init: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (width > SIXEL_WIDTH_LIMIT) { + sixel_helper_set_additional_message( + "image_buffer_init: given width parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height > SIXEL_HEIGHT_LIMIT) { + sixel_helper_set_additional_message( + "image_buffer_init: given height parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + + size = (size_t)(width) * (size_t)height * sizeof(unsigned char); + image->width = width; + image->height = height; + image->data = (unsigned char *)sixel_allocator_malloc(allocator, size); + image->ncolors = 2; + + if (image->data == NULL) { + sixel_helper_set_additional_message( + "sixel_deocde_raw: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + memset(image->data, bgindex, size); + + /* palette initialization */ + for (n = 0; n < 16; n++) { + image->palette[n] = sixel_default_color_table[n]; + } + + /* colors 16-231 are a 6x6x6 color cube */ + for (r = 0; r < 6; r++) { + for (g = 0; g < 6; g++) { + for (b = 0; b < 6; b++) { + image->palette[n++] = SIXEL_RGB(r * 51, g * 51, b * 51); + } + } + } + + /* colors 232-255 are a grayscale ramp, intentionally leaving out */ + for (i = 0; i < 24; i++) { + image->palette[n++] = SIXEL_RGB(i * 11, i * 11, i * 11); + } + + for (; n < SIXEL_PALETTE_MAX; n++) { + image->palette[n] = SIXEL_RGB(255, 255, 255); + } + + status = SIXEL_OK; + +end: + return status; +} + + +static SIXELSTATUS +image_buffer_resize( + image_buffer_t *image, + int width, + int height, + int bgindex, + sixel_allocator_t *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + size_t size; + unsigned char *alt_buffer; + int n; + int min_height; + + /* check parameters */ + if (width <= 0) { + sixel_helper_set_additional_message( + "image_buffer_init: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height <= 0) { + sixel_helper_set_additional_message( + "image_buffer_init: an invalid width parameter detected."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height > SIXEL_HEIGHT_LIMIT) { + sixel_helper_set_additional_message( + "image_buffer_init: given height parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (width > SIXEL_WIDTH_LIMIT) { + sixel_helper_set_additional_message( + "image_buffer_init: given width parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + if (height > SIXEL_HEIGHT_LIMIT) { + sixel_helper_set_additional_message( + "image_buffer_init: given height parameter is too huge."); + status = SIXEL_BAD_INPUT; + goto end; + } + + size = (size_t)width * (size_t)height; + alt_buffer = (unsigned char *)sixel_allocator_malloc(allocator, size); + if (alt_buffer == NULL || size == 0) { + /* free source image */ + sixel_allocator_free(allocator, image->data); + image->data = NULL; + sixel_helper_set_additional_message( + "image_buffer_resize: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + min_height = height > image->height ? image->height: height; + if (width > image->width) { /* if width is extended */ + for (n = 0; n < min_height; ++n) { + /* copy from source image */ + memcpy(alt_buffer + (size_t)width * (size_t)n, + image->data + (size_t)image->width * (size_t)n, + (size_t)image->width); + /* fill extended area with background color */ + memset(alt_buffer + (size_t)width * (size_t)n + (size_t)image->width, + bgindex, + (size_t)(width - image->width)); + } + } else { + for (n = 0; n < min_height; ++n) { + /* copy from source image */ + memcpy(alt_buffer + (size_t)width * (size_t)n, + image->data + (size_t)image->width * (size_t)n, + (size_t)width); + } + } + + if (height > image->height) { /* if height is extended */ + /* fill extended area with background color */ + memset(alt_buffer + (size_t)width * (size_t)image->height, + bgindex, + (size_t)width * (size_t)(height - image->height)); + } + + /* free source image */ + sixel_allocator_free(allocator, image->data); + + image->data = alt_buffer; + image->width = width; + image->height = height; + + status = SIXEL_OK; + +end: + return status; +} + + +static SIXELSTATUS +parser_context_init(parser_context_t *context) +{ + SIXELSTATUS status = SIXEL_FALSE; + + context->state = PS_GROUND; + context->pos_x = 0; + context->pos_y = 0; + context->max_x = 0; + context->max_y = 0; + context->attributed_pan = 2; + context->attributed_pad = 1; + context->attributed_ph = 0; + context->attributed_pv = 0; + context->repeat_count = 1; + context->color_index = 15; + context->bgindex = (-1); + context->nparams = 0; + context->param = 0; + + status = SIXEL_OK; + + return status; +} + + +static SIXELSTATUS +safe_addition_for_params(parser_context_t *context, unsigned char *p) +{ + SIXELSTATUS status = SIXEL_FALSE; + int x; + + x = *p - '0'; /* 0 <= x <= 9 */ + if ((context->param > INT_MAX / 10) || (x > INT_MAX - context->param * 10)) { + status = SIXEL_BAD_INTEGER_OVERFLOW; + sixel_helper_set_additional_message( + "safe_addition_for_params: ingeger overflow detected."); + goto end; + } + context->param = context->param * 10 + x; + status = SIXEL_OK; + +end: + return status; +} + + +/* convert sixel data into indexed pixel bytes and palette data */ +SIXELAPI SIXELSTATUS +sixel_decode_raw_impl( + unsigned char *p, /* sixel bytes */ + int len, /* size of sixel bytes */ + image_buffer_t *image, + parser_context_t *context, + sixel_allocator_t *allocator) /* allocator object */ +{ + SIXELSTATUS status = SIXEL_FALSE; + int n; + int i; + int y; + int bits; + int sixel_vertical_mask; + int sx; + int sy; + int c; + size_t pos; + unsigned char *p0 = p; + + while (p < p0 + len) { + switch (context->state) { + case PS_GROUND: + switch (*p) { + case 0x1b: + context->state = PS_ESC; + p++; + break; + case 0x90: + context->state = PS_DCS; + p++; + break; + case 0x9c: + p++; + goto finalize; + default: + p++; + break; + } + break; + + case PS_ESC: + switch (*p) { + case '\\': + case 0x9c: + p++; + goto finalize; + case 'P': + context->param = -1; + context->state = PS_DCS; + p++; + break; + default: + p++; + break; + } + break; + + case PS_DCS: + switch (*p) { + case 0x1b: + context->state = PS_ESC; + p++; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (context->param < 0) { + context->param = 0; + } + status = safe_addition_for_params(context, p); + if (SIXEL_FAILED(status)) { + goto end; + } + p++; + break; + case ';': + if (context->param < 0) { + context->param = 0; + } + if (context->nparams < DECSIXEL_PARAMS_MAX) { + context->params[context->nparams++] = context->param; + } + context->param = 0; + p++; + break; + case 'q': + if (context->param >= 0 && context->nparams < DECSIXEL_PARAMS_MAX) { + context->params[context->nparams++] = context->param; + } + if (context->nparams > 0) { + /* Pn1 */ + switch (context->params[0]) { + case 0: + case 1: + context->attributed_pad = 2; + break; + case 2: + context->attributed_pad = 5; + break; + case 3: + case 4: + context->attributed_pad = 4; + break; + case 5: + case 6: + context->attributed_pad = 3; + break; + case 7: + case 8: + context->attributed_pad = 2; + break; + case 9: + context->attributed_pad = 1; + break; + default: + context->attributed_pad = 2; + break; + } + } + + if (context->nparams > 2) { + /* Pn3 */ + if (context->params[2] == 0) { + context->params[2] = 10; + } + context->attributed_pan = context->attributed_pan * context->params[2] / 10; + context->attributed_pad = context->attributed_pad * context->params[2] / 10; + if (context->attributed_pan <= 0) { + context->attributed_pan = 1; + } + if (context->attributed_pad <= 0) { + context->attributed_pad = 1; + } + } + context->nparams = 0; + context->state = PS_DECSIXEL; + p++; + break; + default: + p++; + break; + } + break; + + case PS_DECSIXEL: + switch (*p) { + case '\x1b': + context->state = PS_ESC; + p++; + break; + case '"': + context->param = 0; + context->nparams = 0; + context->state = PS_DECGRA; + p++; + break; + case '!': + context->param = 0; + context->nparams = 0; + context->state = PS_DECGRI; + p++; + break; + case '#': + context->param = 0; + context->nparams = 0; + context->state = PS_DECGCI; + p++; + break; + case '$': + /* DECGCR Graphics Carriage Return */ + context->pos_x = 0; + p++; + break; + case '-': + /* DECGNL Graphics Next Line */ + context->pos_x = 0; + context->pos_y += 6; + p++; + break; + default: + if (*p >= '?' && *p <= '~') { /* sixel characters */ + + sx = image->width; + while (sx < context->pos_x + context->repeat_count) { + sx *= 2; + } + + sy = image->height; + while (sy < context->pos_y + 6) { + sy *= 2; + } + + if (sx > image->width || sy > image->height) { + status = image_buffer_resize(image, sx, sy, context->bgindex, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + } + + if (context->color_index > image->ncolors) { + image->ncolors = context->color_index; + } + + if (context->pos_x < 0 || context->pos_y < 0) { + status = SIXEL_BAD_INPUT; + goto end; + } + bits = *p - '?'; + + if (bits == 0) { + context->pos_x += context->repeat_count; + } else { + sixel_vertical_mask = 0x01; + if (context->repeat_count <= 1) { + for (i = 0; i < 6; i++) { + if ((bits & sixel_vertical_mask) != 0) { + pos = (size_t)image->width * (size_t)(context->pos_y + i) + (size_t)context->pos_x; + image->data[pos] = context->color_index; + if (context->max_x < context->pos_x) { + context->max_x = context->pos_x; + } + if (context->max_y < (context->pos_y + i)) { + context->max_y = context->pos_y + i; + } + } + sixel_vertical_mask <<= 1; + } + context->pos_x += 1; + } else { + /* context->repeat_count > 1 */ + for (i = 0; i < 6; i++) { + if ((bits & sixel_vertical_mask) != 0) { + c = sixel_vertical_mask << 1; + for (n = 1; (i + n) < 6; n++) { + if ((bits & c) == 0) { + break; + } + c <<= 1; + } + for (y = context->pos_y + i; y < context->pos_y + i + n; ++y) { + memset(image->data + (size_t)image->width * (size_t)y + (size_t)context->pos_x, + context->color_index, + (size_t)context->repeat_count); + } + if (context->max_x < (context->pos_x + context->repeat_count - 1)) { + context->max_x = context->pos_x + context->repeat_count - 1; + } + if (context->max_y < (context->pos_y + i + n - 1)) { + context->max_y = context->pos_y + i + n - 1; + } + i += (n - 1); + sixel_vertical_mask <<= (n - 1); + } + sixel_vertical_mask <<= 1; + } + context->pos_x += context->repeat_count; + } + } + context->repeat_count = 1; + } + p++; + break; + } + break; + + case PS_DECGRA: + /* DECGRA Set Raster Attributes " Pan; Pad; Ph; Pv */ + switch (*p) { + case '\x1b': + context->state = PS_ESC; + p++; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + status = safe_addition_for_params(context, p); + if (SIXEL_FAILED(status)) { + goto end; + } + p++; + break; + case ';': + if (context->nparams < DECSIXEL_PARAMS_MAX) { + context->params[context->nparams++] = context->param; + } + context->param = 0; + p++; + break; + default: + if (context->nparams < DECSIXEL_PARAMS_MAX) { + context->params[context->nparams++] = context->param; + } + if (context->nparams > 0) { + context->attributed_pad = context->params[0]; + } + if (context->nparams > 1) { + context->attributed_pan = context->params[1]; + } + if (context->nparams > 2 && context->params[2] > 0) { + context->attributed_ph = context->params[2]; + } + if (context->nparams > 3 && context->params[3] > 0) { + context->attributed_pv = context->params[3]; + } + + if (context->attributed_pan <= 0) { + context->attributed_pan = 1; + } + if (context->attributed_pad <= 0) { + context->attributed_pad = 1; + } + + if (image->width < context->attributed_ph || + image->height < context->attributed_pv) { + sx = context->attributed_ph; + if (image->width > context->attributed_ph) { + sx = image->width; + } + + sy = context->attributed_pv; + if (image->height > context->attributed_pv) { + sy = image->height; + } + + status = image_buffer_resize(image, sx, sy, context->bgindex, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + } + context->state = PS_DECSIXEL; + context->param = 0; + context->nparams = 0; + } + break; + + case PS_DECGRI: + /* DECGRI Graphics Repeat Introducer ! Pn Ch */ + switch (*p) { + case '\x1b': + context->state = PS_ESC; + p++; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + status = safe_addition_for_params(context, p); + if (SIXEL_FAILED(status)) { + goto end; + } + p++; + break; + default: + context->repeat_count = context->param; + if (context->repeat_count == 0) { + context->repeat_count = 1; + } + if (context->repeat_count > 0xffff) { /* check too huge number */ + status = SIXEL_BAD_INPUT; + sixel_helper_set_additional_message( + "sixel_decode_raw_impl: detected too huge repeat parameter."); + goto end; + } + context->state = PS_DECSIXEL; + context->param = 0; + context->nparams = 0; + break; + } + break; + + case PS_DECGCI: + /* DECGCI Graphics Color Introducer # Pc; Pu; Px; Py; Pz */ + switch (*p) { + case '\x1b': + context->state = PS_ESC; + p++; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + status = safe_addition_for_params(context, p); + if (SIXEL_FAILED(status)) { + goto end; + } + p++; + break; + case ';': + if (context->nparams < DECSIXEL_PARAMS_MAX) { + context->params[context->nparams++] = context->param; + } + context->param = 0; + p++; + break; + default: + context->state = PS_DECSIXEL; + if (context->nparams < DECSIXEL_PARAMS_MAX) { + context->params[context->nparams++] = context->param; + } + context->param = 0; + + if (context->nparams > 0) { + context->color_index = context->params[0]; + if (context->color_index < 0) { + context->color_index = 0; + } else if (context->color_index >= SIXEL_PALETTE_MAX) { + context->color_index = SIXEL_PALETTE_MAX - 1; + } + } + + if (context->nparams > 4) { + if (context->params[1] == 1) { + /* HLS */ + if (context->params[2] > 360) { + context->params[2] = 360; + } + if (context->params[3] > 100) { + context->params[3] = 100; + } + if (context->params[4] > 100) { + context->params[4] = 100; + } + image->palette[context->color_index] + = hls_to_rgb(context->params[2], context->params[3], context->params[4]); + } else if (context->params[1] == 2) { + /* RGB */ + if (context->params[2] > 100) { + context->params[2] = 100; + } + if (context->params[3] > 100) { + context->params[3] = 100; + } + if (context->params[4] > 100) { + context->params[4] = 100; + } + image->palette[context->color_index] + = SIXEL_XRGB(context->params[2], context->params[3], context->params[4]); + } + } + break; + } + break; + default: + break; + } + } + +finalize: + if (++context->max_x < context->attributed_ph) { + context->max_x = context->attributed_ph; + } + + if (++context->max_y < context->attributed_pv) { + context->max_y = context->attributed_pv; + } + + if (image->width > context->max_x || image->height > context->max_y) { + status = image_buffer_resize(image, context->max_x, context->max_y, context->bgindex, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + } + + status = SIXEL_OK; + +end: + return status; +} + + +/* convert sixel data into indexed pixel bytes and palette data */ +SIXELAPI SIXELSTATUS +sixel_decode_raw( + unsigned char /* in */ *p, /* sixel bytes */ + int /* in */ len, /* size of sixel bytes */ + unsigned char /* out */ **pixels, /* decoded pixels */ + int /* out */ *pwidth, /* image width */ + int /* out */ *pheight, /* image height */ + unsigned char /* out */ **palette, /* ARGB palette */ + int /* out */ *ncolors, /* palette size (<= 256) */ + sixel_allocator_t /* in */ *allocator) /* allocator object or null */ +{ + SIXELSTATUS status = SIXEL_FALSE; + parser_context_t context; + image_buffer_t image; + int n; + + image.data = NULL; + + if (allocator) { + sixel_allocator_ref(allocator); + } else { + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + allocator = NULL; + goto error; + } + } + + /* parser context initialization */ + status = parser_context_init(&context); + if (SIXEL_FAILED(status)) { + goto error; + } + + /* buffer initialization */ + status = image_buffer_init(&image, 1, 1, context.bgindex, allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_decode_raw_impl(p, len, &image, &context, allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + *ncolors = image.ncolors + 1; + int alloc_size = *ncolors; + if (alloc_size < SIXEL_PALETTE_MAX) { + /* memory access range should be 0 <= 255 */ + alloc_size = SIXEL_PALETTE_MAX; + } + *palette = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)(alloc_size * 3)); + if (palette == NULL) { + sixel_allocator_free(allocator, image.data); + sixel_helper_set_additional_message( + "sixel_deocde_raw: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto error; + } + for (n = 0; n < *ncolors; ++n) { + (*palette)[n * 3 + 0] = image.palette[n] >> 16 & 0xff; + (*palette)[n * 3 + 1] = image.palette[n] >> 8 & 0xff; + (*palette)[n * 3 + 2] = image.palette[n] & 0xff; + } + + *pwidth = image.width; + *pheight = image.height; + *pixels = image.data; + + status = SIXEL_OK; + goto end; + +error: + free(image.data); + image.data = NULL; + +end: + sixel_allocator_unref(allocator); + return status; +} + + +/* deprecated */ +SIXELAPI SIXELSTATUS +sixel_decode(unsigned char /* in */ *p, /* sixel bytes */ + int /* in */ len, /* size of sixel bytes */ + unsigned char /* out */ **pixels, /* decoded pixels */ + int /* out */ *pwidth, /* image width */ + int /* out */ *pheight, /* image height */ + unsigned char /* out */ **palette, /* ARGB palette */ + int /* out */ *ncolors, /* palette size (<= 256) */ + sixel_allocator_function /* in */ fn_malloc) /* malloc function */ +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_allocator_t *allocator = NULL; + parser_context_t context; + image_buffer_t image; + int n; + + status = sixel_allocator_new(&allocator, fn_malloc, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + allocator = NULL; + goto end; + } + + /* parser context initialization */ + status = parser_context_init(&context); + if (SIXEL_FAILED(status)) { + goto end; + } + + /* buffer initialization */ + status = image_buffer_init(&image, 2048, 2048, context.bgindex, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = sixel_decode_raw_impl(p, len, &image, &context, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + *ncolors = image.ncolors + 1; + *palette = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)(*ncolors * 3)); + if (palette == NULL) { + sixel_allocator_free(allocator, image.data); + sixel_helper_set_additional_message( + "sixel_deocde_raw: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + for (n = 0; n < *ncolors; ++n) { + (*palette)[n * 3 + 0] = image.palette[n] >> 16 & 0xff; + (*palette)[n * 3 + 1] = image.palette[n] >> 8 & 0xff; + (*palette)[n * 3 + 2] = image.palette[n] & 0xff; + } + + *pwidth = image.width; + *pheight = image.height; + *pixels = image.data; + + status = SIXEL_OK; + +end: + sixel_allocator_unref(allocator); + return status; +} + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/loader.c b/ThirdParty/libsixel/src/loader.c new file mode 100644 index 0000000000..abc27f88bf --- /dev/null +++ b/ThirdParty/libsixel/src/loader.c @@ -0,0 +1,1488 @@ +/* + * Copyright (c) 2014-2019 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif +#if HAVE_STRING_H +# include +#endif +#if HAVE_UNISTD_H +# include +#endif +#if HAVE_ERRNO_H +# include +#endif +#ifdef HAVE_GDK_PIXBUF2 +# if HAVE_DIAGNOSTIC_TYPEDEF_REDEFINITION +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wtypedef-redefinition" +# endif +# include +# if HAVE_DIAGNOSTIC_TYPEDEF_REDEFINITION +# pragma GCC diagnostic pop +# endif +#endif +#if HAVE_GD +# include +#endif +#if HAVE_LIBPNG +# include +#endif /* HAVE_LIBPNG */ +#if HAVE_JPEG +# include +#endif /* HAVE_JPEG */ + +#if !defined(HAVE_MEMCPY) +# define memcpy(d, s, n) (bcopy ((s), (d), (n))) +#endif + +#include "frame.h" +#include +#include "chunk.h" +#include "frompnm.h" +#include "fromgif.h" +#include "allocator.h" + +sixel_allocator_t *stbi_allocator; + +void * +stbi_malloc(size_t n) +{ + return sixel_allocator_malloc(stbi_allocator, n); +} + +void * +stbi_realloc(void *p, size_t n) +{ + return sixel_allocator_realloc(stbi_allocator, p, n); +} + +void +stbi_free(void *p) +{ + sixel_allocator_free(stbi_allocator, p); +} + +#define STBI_MALLOC stbi_malloc +#define STBI_REALLOC stbi_realloc +#define STBI_FREE stbi_free + +#define STBI_NO_STDIO 1 +#define STB_IMAGE_IMPLEMENTATION 1 +#define STBI_FAILURE_USERMSG 1 +#define STBI_NO_GIF +#define STBI_NO_PNM + +#if HAVE_DIAGNOSTIC_SIGN_CONVERSION +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-conversion" +#endif +#if HAVE_DIAGNOSTIC_STRICT_OVERFLOW +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wstrict-overflow" +#endif +#if HAVE_DIAGNOSTIC_SWITCH_DEFAULT +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wswitch-default" +#endif +#if HAVE_DIAGNOSTIC_SHADOW +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wshadow" +#endif +#if HAVE_DIAGNOSTIC_DOUBLE_PROMOTION +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdouble-promotion" +#endif +# if HAVE_DIAGNOSTIC_UNUSED_FUNCTION +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wunused-function" +#endif +# if HAVE_DIAGNOSTIC_UNUSED_BUT_SET_VARIABLE +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#include "stb_image.h" +#if HAVE_DIAGNOSTIC_UNUSED_BUT_SET_VARIABLE +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_UNUSED_FUNCTION +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_DOUBLE_PROMOTION +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_SHADOW +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_SWITCH_DEFAULT +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_STRICT_OVERFLOW +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_SIGN_CONVERSION +# pragma GCC diagnostic pop +#endif + + +# if HAVE_JPEG +/* import from @uobikiemukot's sdump loader.h */ +static SIXELSTATUS +load_jpeg(unsigned char **result, + unsigned char *data, + size_t datasize, + int *pwidth, + int *pheight, + int *ppixelformat, + sixel_allocator_t *allocator) +{ + SIXELSTATUS status = SIXEL_JPEG_ERROR; + JDIMENSION row_stride; + size_t size; + JSAMPARRAY buffer; + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr pub; + + cinfo.err = jpeg_std_error(&pub); + + jpeg_create_decompress(&cinfo); + jpeg_mem_src(&cinfo, data, datasize); + jpeg_read_header(&cinfo, TRUE); + + /* disable colormap (indexed color), grayscale -> rgb */ + cinfo.quantize_colors = FALSE; + cinfo.out_color_space = JCS_RGB; + jpeg_start_decompress(&cinfo); + + if (cinfo.output_components != 3) { + sixel_helper_set_additional_message( + "load_jpeg: unknown pixel format."); + status = SIXEL_BAD_INPUT; + goto end; + } + + *ppixelformat = SIXEL_PIXELFORMAT_RGB888; + *pwidth = (int)cinfo.output_width; + *pheight = (int)cinfo.output_height; + + size = (size_t)(*pwidth * *pheight * cinfo.output_components); + *result = (unsigned char *)sixel_allocator_malloc(allocator, size); + if (*result == NULL) { + sixel_helper_set_additional_message( + "load_jpeg: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + row_stride = cinfo.output_width * (unsigned int)cinfo.output_components; + buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr)&cinfo, JPOOL_IMAGE, row_stride, 1); + + while (cinfo.output_scanline < cinfo.output_height) { + jpeg_read_scanlines(&cinfo, buffer, 1); + if (cinfo.err->num_warnings > 0) { + sixel_helper_set_additional_message( + "jpeg_read_scanlines: error/warining occuered."); + status = SIXEL_BAD_INPUT; + goto end; + } + memcpy(*result + (cinfo.output_scanline - 1) * row_stride, buffer[0], row_stride); + } + + status = SIXEL_OK; + +end: + jpeg_finish_decompress(&cinfo); + jpeg_destroy_decompress(&cinfo); + + return status; +} +# endif /* HAVE_JPEG */ + + +# if HAVE_LIBPNG +static void +read_png(png_structp png_ptr, + png_bytep data, + png_size_t length) +{ + sixel_chunk_t *pchunk = (sixel_chunk_t *)png_get_io_ptr(png_ptr); + if (length > pchunk->size) { + length = pchunk->size; + } + if (length > 0) { + memcpy(data, pchunk->buffer, length); + pchunk->buffer += length; + pchunk->size -= length; + } +} + + +static void +read_palette(png_structp png_ptr, + png_infop info_ptr, + unsigned char *palette, + int ncolors, + png_color *png_palette, + png_color_16 *pbackground, + int *transparent) +{ + png_bytep trans = NULL; + int num_trans = 0; + int i; + + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { + png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL); + } + if (num_trans > 0) { + *transparent = trans[0]; + } + for (i = 0; i < ncolors; ++i) { + if (pbackground && i < num_trans) { + palette[i * 3 + 0] = ((0xff - trans[i]) * pbackground->red + + trans[i] * png_palette[i].red) >> 8; + palette[i * 3 + 1] = ((0xff - trans[i]) * pbackground->green + + trans[i] * png_palette[i].green) >> 8; + palette[i * 3 + 2] = ((0xff - trans[i]) * pbackground->blue + + trans[i] * png_palette[i].blue) >> 8; + } else { + palette[i * 3 + 0] = png_palette[i].red; + palette[i * 3 + 1] = png_palette[i].green; + palette[i * 3 + 2] = png_palette[i].blue; + } + } +} + +jmp_buf jmpbuf; + +/* libpng error handler */ +static void +png_error_callback(png_structp png_ptr, png_const_charp error_message) +{ + (void) png_ptr; + + sixel_helper_set_additional_message(error_message); +#if HAVE_SETJMP && HAVE_LONGJMP + longjmp(jmpbuf, 1); +#endif /* HAVE_SETJMP && HAVE_LONGJMP */ +} + + +static SIXELSTATUS +load_png(unsigned char /* out */ **result, + unsigned char /* in */ *buffer, + size_t /* in */ size, + int /* out */ *psx, + int /* out */ *psy, + unsigned char /* out */ **ppalette, + int /* out */ *pncolors, + int /* in */ reqcolors, + int /* out */ *pixelformat, + unsigned char /* out */ *bgcolor, + int /* out */ *transparent, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status; + sixel_chunk_t read_chunk; + png_uint_32 bitdepth; + png_uint_32 png_status; + png_structp png_ptr; + png_infop info_ptr; +#ifdef HAVE_DIAGNOSTIC_CLOBBERED +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wclobbered" +#endif + unsigned char **rows; + png_color *png_palette = NULL; + png_color_16 background; + png_color_16p default_background; + int i; + int depth; + +#if HAVE_SETJMP && HAVE_LONGJMP + if (setjmp(jmpbuf) != 0) { + sixel_allocator_free(allocator, *result); + *result = NULL; + status = SIXEL_PNG_ERROR; + goto cleanup; + } +#endif /* HAVE_SETJMP && HAVE_LONGJMP */ + + status = SIXEL_FALSE; + rows = NULL; + *result = NULL; + + png_ptr = png_create_read_struct( + PNG_LIBPNG_VER_STRING, NULL, &png_error_callback, NULL); + if (!png_ptr) { + sixel_helper_set_additional_message( + "png_create_read_struct() failed."); + status = SIXEL_PNG_ERROR; + goto cleanup; + } + +#if HAVE_SETJMP + if (setjmp(png_jmpbuf(png_ptr)) != 0) { + sixel_allocator_free(allocator, *result); + *result = NULL; + status = SIXEL_PNG_ERROR; + goto cleanup; + } +#endif /* HAVE_SETJMP */ + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + sixel_helper_set_additional_message( + "png_create_info_struct() failed."); + status = SIXEL_PNG_ERROR; + png_destroy_read_struct(&png_ptr, (png_infopp)0, (png_infopp)0); + goto cleanup; + } + read_chunk.buffer = buffer; + read_chunk.size = size; + + png_set_read_fn(png_ptr,(png_voidp)&read_chunk, read_png); + png_read_info(png_ptr, info_ptr); + *psx = (int)png_get_image_width(png_ptr, info_ptr); + *psy = (int)png_get_image_height(png_ptr, info_ptr); + bitdepth = png_get_bit_depth(png_ptr, info_ptr); + if (bitdepth == 16) { +# if HAVE_DEBUG + fprintf(stderr, "bitdepth: %u\n", (unsigned int)bitdepth); + fprintf(stderr, "stripping to 8bit...\n"); +# endif + png_set_strip_16(png_ptr); + bitdepth = 8; + } + + if (bgcolor) { +# if HAVE_DEBUG + fprintf(stderr, "background color is specified [%02x, %02x, %02x]\n", + bgcolor[0], bgcolor[1], bgcolor[2]); +# endif + background.red = bgcolor[0]; + background.green = bgcolor[1]; + background.blue = bgcolor[2]; + background.gray = (bgcolor[0] + bgcolor[1] + bgcolor[2]) / 3; + } else if (png_get_bKGD(png_ptr, info_ptr, &default_background) == PNG_INFO_bKGD) { + memcpy(&background, default_background, sizeof(background)); +# if HAVE_DEBUG + fprintf(stderr, "background color is found [%02x, %02x, %02x]\n", + background.red, background.green, background.blue); +# endif + } else { + background.red = 0; + background.green = 0; + background.blue = 0; + background.gray = 0; + } + + switch (png_get_color_type(png_ptr, info_ptr)) { + case PNG_COLOR_TYPE_PALETTE: +# if HAVE_DEBUG + fprintf(stderr, "paletted PNG(PNG_COLOR_TYPE_PALETTE)\n"); +# endif + png_status = png_get_PLTE(png_ptr, info_ptr, + &png_palette, pncolors); + if (png_status != PNG_INFO_PLTE || png_palette == NULL) { + sixel_helper_set_additional_message( + "PLTE chunk not found"); + status = SIXEL_PNG_ERROR; + goto cleanup; + } +# if HAVE_DEBUG + fprintf(stderr, "palette colors: %d\n", *pncolors); + fprintf(stderr, "bitdepth: %u\n", (unsigned int)bitdepth); +# endif + if (ppalette == NULL || *pncolors > reqcolors) { +# if HAVE_DEBUG + fprintf(stderr, "detected more colors than reqired(>%d).\n", + reqcolors); + fprintf(stderr, "expand to RGB format...\n"); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_palette_to_rgb(png_ptr); + png_set_strip_alpha(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + } else { + switch (bitdepth) { + case 1: + *ppalette = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)*pncolors * 3); + if (*ppalette == NULL) { + sixel_helper_set_additional_message( + "load_png: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto cleanup; + } + read_palette(png_ptr, info_ptr, *ppalette, + *pncolors, png_palette, &background, transparent); + *pixelformat = SIXEL_PIXELFORMAT_PAL1; + break; + case 2: + *ppalette = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)*pncolors * 3); + if (*ppalette == NULL) { + sixel_helper_set_additional_message( + "load_png: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto cleanup; + } + read_palette(png_ptr, info_ptr, *ppalette, + *pncolors, png_palette, &background, transparent); + *pixelformat = SIXEL_PIXELFORMAT_PAL2; + break; + case 4: + *ppalette = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)*pncolors * 3); + if (*ppalette == NULL) { + sixel_helper_set_additional_message( + "load_png: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto cleanup; + } + read_palette(png_ptr, info_ptr, *ppalette, + *pncolors, png_palette, &background, transparent); + *pixelformat = SIXEL_PIXELFORMAT_PAL4; + break; + case 8: + *ppalette = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)*pncolors * 3); + if (*ppalette == NULL) { + sixel_helper_set_additional_message( + "load_png: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto cleanup; + } + read_palette(png_ptr, info_ptr, *ppalette, + *pncolors, png_palette, &background, transparent); + *pixelformat = SIXEL_PIXELFORMAT_PAL8; + break; + default: + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_palette_to_rgb(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + } + } + break; + case PNG_COLOR_TYPE_GRAY: +# if HAVE_DEBUG + fprintf(stderr, "grayscale PNG(PNG_COLOR_TYPE_GRAY)\n"); + fprintf(stderr, "bitdepth: %u\n", (unsigned int)bitdepth); +# endif + if (1 << bitdepth > reqcolors) { +# if HAVE_DEBUG + fprintf(stderr, "detected more colors than reqired(>%d).\n", + reqcolors); + fprintf(stderr, "expand into RGB format...\n"); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_gray_to_rgb(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + } else { + switch (bitdepth) { + case 1: + case 2: + case 4: + if (ppalette) { +# if HAVE_DECL_PNG_SET_EXPAND_GRAY_1_2_4_TO_8 +# if HAVE_DEBUG + fprintf(stderr, "expand %u bpp to 8bpp format...\n", + (unsigned int)bitdepth); +# endif + png_set_expand_gray_1_2_4_to_8(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_G8; +# elif HAVE_DECL_PNG_SET_GRAY_1_2_4_TO_8 +# if HAVE_DEBUG + fprintf(stderr, "expand %u bpp to 8bpp format...\n", + (unsigned int)bitdepth); +# endif + png_set_gray_1_2_4_to_8(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_G8; +# else +# if HAVE_DEBUG + fprintf(stderr, "expand into RGB format...\n"); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_gray_to_rgb(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; +# endif + } else { + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_gray_to_rgb(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + } + break; + case 8: + if (ppalette) { + *pixelformat = SIXEL_PIXELFORMAT_G8; + } else { +# if HAVE_DEBUG + fprintf(stderr, "expand into RGB format...\n"); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_gray_to_rgb(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + } + break; + default: +# if HAVE_DEBUG + fprintf(stderr, "expand into RGB format...\n"); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_gray_to_rgb(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + } + } + break; + case PNG_COLOR_TYPE_GRAY_ALPHA: +# if HAVE_DEBUG + fprintf(stderr, "grayscale-alpha PNG(PNG_COLOR_TYPE_GRAY_ALPHA)\n"); + fprintf(stderr, "bitdepth: %u\n", (unsigned int)bitdepth); + fprintf(stderr, "expand to RGB format...\n"); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + png_set_gray_to_rgb(png_ptr); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case PNG_COLOR_TYPE_RGB_ALPHA: +# if HAVE_DEBUG + fprintf(stderr, "RGBA PNG(PNG_COLOR_TYPE_RGB_ALPHA)\n"); + fprintf(stderr, "bitdepth: %u\n", (unsigned int)bitdepth); + fprintf(stderr, "expand to RGB format...\n"); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case PNG_COLOR_TYPE_RGB: +# if HAVE_DEBUG + fprintf(stderr, "RGB PNG(PNG_COLOR_TYPE_RGB)\n"); + fprintf(stderr, "bitdepth: %u\n", (unsigned int)bitdepth); +# endif + png_set_background(png_ptr, &background, + PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); + *pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + default: + /* unknown format */ + goto cleanup; + } + depth = sixel_helper_compute_depth(*pixelformat); + *result = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)(*psx * *psy * depth)); + if (*result == NULL) { + sixel_helper_set_additional_message( + "load_png: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto cleanup; + } + rows = (unsigned char **)sixel_allocator_malloc(allocator, (size_t)*psy * sizeof(unsigned char *)); + if (rows == NULL) { + sixel_helper_set_additional_message( + "load_png: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto cleanup; + } + switch (*pixelformat) { + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + for (i = 0; i < *psy; ++i) { + rows[i] = *result + (depth * *psx * (int)bitdepth + 7) / 8 * i; + } + break; + default: + for (i = 0; i < *psy; ++i) { + rows[i] = *result + depth * *psx * i; + } + break; + } + + png_read_image(png_ptr, rows); + + status = SIXEL_OK; + +cleanup: + png_destroy_read_struct(&png_ptr, &info_ptr,(png_infopp)0); + sixel_allocator_free(allocator, rows); + + return status; +} +#ifdef HAVE_DIAGNOSTIC_CLOBBERED +# pragma GCC diagnostic pop +#endif + +# endif /* HAVE_LIBPNG */ + + +static SIXELSTATUS +load_sixel(unsigned char /* out */ **result, + unsigned char /* in */ *buffer, + int /* in */ size, + int /* out */ *psx, + int /* out */ *psy, + unsigned char /* out */ **ppalette, + int /* out */ *pncolors, + int /* in */ reqcolors, + int /* out */ *ppixelformat, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char *p = NULL; + unsigned char *palette = NULL; + int colors; + int i; + + /* sixel */ + status = sixel_decode_raw(buffer, size, + &p, psx, psy, + &palette, &colors, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + if (ppalette == NULL || colors > reqcolors) { + *ppixelformat = SIXEL_PIXELFORMAT_RGB888; + *result = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)(*psx * *psy * 3)); + if (*result == NULL) { + sixel_helper_set_additional_message( + "load_sixel: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + for (i = 0; i < *psx * *psy; ++i) { + (*result)[i * 3 + 0] = palette[p[i] * 3 + 0]; + (*result)[i * 3 + 1] = palette[p[i] * 3 + 1]; + (*result)[i * 3 + 2] = palette[p[i] * 3 + 2]; + } + } else { + *ppixelformat = SIXEL_PIXELFORMAT_PAL8; + *result = p; + *ppalette = palette; + *pncolors = colors; + p = NULL; + palette = NULL; + } + +end: + sixel_allocator_free(allocator, palette); + sixel_allocator_free(allocator, p); + + return status; +} + + +/* detect whether given chunk is sixel stream */ +static int +chunk_is_sixel(sixel_chunk_t const *chunk) +{ + unsigned char *p; + unsigned char *end; + + p = chunk->buffer; + end = p + chunk->size; + + if (chunk->size < 3) { + return 0; + } + + p++; + if (p >= end) { + return 0; + } + if (*(p - 1) == 0x90 || (*(p - 1) == 0x1b && *p == 0x50)) { + while (p++ < end) { + if (*p == 0x71) { + return 1; + } else if (*p == 0x18 || *p == 0x1a) { + return 0; + } else if (*p < 0x20) { + continue; + } else if (*p < 0x30) { + return 0; + } else if (*p < 0x40) { + continue; + } + } + } + return 0; +} + + +/* detect whether given chunk is PNM stream */ +static int +chunk_is_pnm(sixel_chunk_t const *chunk) +{ + if (chunk->size < 2) { + return 0; + } + if (chunk->buffer[0] == 'P' && + chunk->buffer[1] >= '1' && + chunk->buffer[1] <= '6') { + return 1; + } + return 0; +} + + +#if HAVE_LIBPNG +/* detect whether given chunk is PNG stream */ +static int +chunk_is_png(sixel_chunk_t const *chunk) +{ + if (chunk->size < 8) { + return 0; + } + if (png_check_sig(chunk->buffer, 8)) { + return 1; + } + return 0; +} +#endif /* HAVE_LIBPNG */ + + +/* detect whether given chunk is GIF stream */ +static int +chunk_is_gif(sixel_chunk_t const *chunk) +{ + if (chunk->size < 6) { + return 0; + } + if (chunk->buffer[0] == 'G' && + chunk->buffer[1] == 'I' && + chunk->buffer[2] == 'F' && + chunk->buffer[3] == '8' && + (chunk->buffer[4] == '7' || chunk->buffer[4] == '9') && + chunk->buffer[5] == 'a') { + return 1; + } + return 0; +} + + +#if HAVE_JPEG +/* detect whether given chunk is JPEG stream */ +static int +chunk_is_jpeg(sixel_chunk_t const *chunk) +{ + if (chunk->size < 2) { + return 0; + } + if (memcmp("\xFF\xD8", chunk->buffer, 2) == 0) { + return 1; + } + return 0; +} +#endif /* HAVE_JPEG */ + +typedef union _fn_pointer { + sixel_load_image_function fn; + void * p; +} fn_pointer; + +/* load images using builtin image loaders */ +static SIXELSTATUS +load_with_builtin( + sixel_chunk_t const /* in */ *pchunk, /* image data */ + int /* in */ fstatic, /* static */ + int /* in */ fuse_palette, /* whether to use palette if possible */ + int /* in */ reqcolors, /* reqcolors */ + unsigned char /* in */ *bgcolor, /* background color */ + int /* in */ loop_control, /* one of enum loop_control */ + sixel_load_image_function /* in */ fn_load, /* callback */ + void /* in/out */ *context /* private data for callback */ +) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_frame_t *frame = NULL; + char message[256]; + int nwrite; + fn_pointer fnp; + + if (chunk_is_sixel(pchunk)) { + status = sixel_frame_new(&frame, pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + status = load_sixel(&frame->pixels, + pchunk->buffer, + (int)pchunk->size, + &frame->width, + &frame->height, + fuse_palette ? &frame->palette: NULL, + &frame->ncolors, + reqcolors, + &frame->pixelformat, + pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + } else if (chunk_is_pnm(pchunk)) { + status = sixel_frame_new(&frame, pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + /* pnm */ + status = load_pnm(pchunk->buffer, + (int)pchunk->size, + frame->allocator, + &frame->pixels, + &frame->width, + &frame->height, + fuse_palette ? &frame->palette: NULL, + &frame->ncolors, + &frame->pixelformat); + if (SIXEL_FAILED(status)) { + goto end; + } + } +#if HAVE_JPEG + else if (chunk_is_jpeg(pchunk)) { + status = sixel_frame_new(&frame, pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + status = load_jpeg(&frame->pixels, + pchunk->buffer, + pchunk->size, + &frame->width, + &frame->height, + &frame->pixelformat, + pchunk->allocator); + + if (SIXEL_FAILED(status)) { + goto end; + } + } +#endif /* HAVE_JPEG */ +#if HAVE_LIBPNG + else if (chunk_is_png(pchunk)) { + status = sixel_frame_new(&frame, pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + status = load_png(&frame->pixels, + pchunk->buffer, + pchunk->size, + &frame->width, + &frame->height, + fuse_palette ? &frame->palette: NULL, + &frame->ncolors, + reqcolors, + &frame->pixelformat, + bgcolor, + &frame->transparent, + pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + } +#endif /* HAVE_LIBPNG */ + else if (chunk_is_gif(pchunk)) { + fnp.fn = fn_load; + status = load_gif(pchunk->buffer, + (int)pchunk->size, + bgcolor, + reqcolors, + fuse_palette, + fstatic, + loop_control, + fnp.p, + context, + pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + goto end; + } else { + stbi__context s; + int depth; + + status = sixel_frame_new(&frame, pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + stbi_allocator = pchunk->allocator; + stbi__start_mem(&s, pchunk->buffer, (int)pchunk->size); + frame->pixels = stbi__load_and_postprocess_8bit(&s, &frame->width, &frame->height, &depth, 3); + if (!frame->pixels) { + sixel_helper_set_additional_message(stbi_failure_reason()); + status = SIXEL_STBI_ERROR; + goto end; + } + frame->loop_count = 1; + + switch (depth) { + case 1: + case 3: + case 4: + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + default: + nwrite = sprintf(message, + "load_with_builtin() failed.\n" + "reason: unknown pixel-format.(depth: %d)\n", + depth); + if (nwrite > 0) { + sixel_helper_set_additional_message(message); + } + goto end; + } + } + + status = sixel_frame_strip_alpha(frame, bgcolor); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = fn_load(frame, context); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = SIXEL_OK; + +end: + sixel_frame_unref(frame); + + return status; +} + + +#ifdef HAVE_GDK_PIXBUF2 +static SIXELSTATUS +load_with_gdkpixbuf( + sixel_chunk_t const /* in */ *pchunk, /* image data */ + int /* in */ fstatic, /* static */ + int /* in */ fuse_palette, /* whether to use palette if possible */ + int /* in */ reqcolors, /* reqcolors */ + unsigned char /* in */ *bgcolor, /* background color */ + int /* in */ loop_control, /* one of enum loop_control */ + sixel_load_image_function /* in */ fn_load, /* callback */ + void /* in/out */ *context /* private data for callback */ +) +{ + SIXELSTATUS status = SIXEL_FALSE; + GdkPixbuf *pixbuf; + GdkPixbufAnimation *animation; + GdkPixbufLoader *loader = NULL; + GdkPixbufAnimationIter *it; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + GTimeVal time_val; +#pragma GCC diagnostic pop + sixel_frame_t *frame = NULL; + int stride; + unsigned char *p; + int i; + int depth; + + (void) fuse_palette; + (void) reqcolors; + (void) bgcolor; + + status = sixel_frame_new(&frame, pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + +#if (!GLIB_CHECK_VERSION(2, 36, 0)) + g_type_init(); +#endif +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + g_get_current_time(&time_val); +#pragma GCC diagnostic pop + loader = gdk_pixbuf_loader_new(); + gdk_pixbuf_loader_write(loader, pchunk->buffer, pchunk->size, NULL); + animation = gdk_pixbuf_loader_get_animation(loader); + if (!animation || fstatic || gdk_pixbuf_animation_is_static_image(animation)) { + pixbuf = gdk_pixbuf_loader_get_pixbuf(loader); + if (pixbuf == NULL) { + goto end; + } + frame->frame_no = 0; + frame->width = gdk_pixbuf_get_width(pixbuf); + frame->height = gdk_pixbuf_get_height(pixbuf); + stride = gdk_pixbuf_get_rowstride(pixbuf); + frame->pixels = sixel_allocator_malloc(pchunk->allocator, (size_t)(frame->height * stride)); + if (frame->pixels == NULL) { + sixel_helper_set_additional_message( + "load_with_gdkpixbuf: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + if (stride / frame->width == 4) { + frame->pixelformat = SIXEL_PIXELFORMAT_RGBA8888; + depth = 4; + } else { + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + depth = 3; + } + p = gdk_pixbuf_get_pixels(pixbuf); + if (stride == frame->width * depth) { + memcpy(frame->pixels, gdk_pixbuf_get_pixels(pixbuf), + (size_t)(frame->height * stride)); + } else { + for (i = 0; i < frame->height; ++i) { + memcpy(frame->pixels + frame->width * depth * i, + p + stride * i, + (size_t)(frame->width * depth)); + } + } + status = fn_load(frame, context); + if (status != SIXEL_OK) { + goto end; + } + } else { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + g_get_current_time(&time_val); +#pragma GCC diagnostic pop + + frame->frame_no = 0; + + it = gdk_pixbuf_animation_get_iter(animation, &time_val); + for (;;) { + while (!gdk_pixbuf_animation_iter_on_currently_loading_frame(it)) { + frame->delay = gdk_pixbuf_animation_iter_get_delay_time(it); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + g_time_val_add(&time_val, frame->delay * 1000); +#pragma GCC diagnostic pop + frame->delay /= 10; + pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(it); + if (pixbuf == NULL) { + break; + } + frame->width = gdk_pixbuf_get_width(pixbuf); + frame->height = gdk_pixbuf_get_height(pixbuf); + stride = gdk_pixbuf_get_rowstride(pixbuf); + frame->pixels = sixel_allocator_malloc(pchunk->allocator, (size_t)(frame->height * stride)); + if (frame->pixels == NULL) { + sixel_helper_set_additional_message( + "load_with_gdkpixbuf: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + if (gdk_pixbuf_get_has_alpha(pixbuf)) { + frame->pixelformat = SIXEL_PIXELFORMAT_RGBA8888; + depth = 4; + } else { + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + depth = 3; + } + p = gdk_pixbuf_get_pixels(pixbuf); + if (stride == frame->width * depth) { + memcpy(frame->pixels, gdk_pixbuf_get_pixels(pixbuf), + (size_t)(frame->height * stride)); + } else { + for (i = 0; i < frame->height; ++i) { + memcpy(frame->pixels + frame->width * depth * i, + p + stride * i, + (size_t)(frame->width * depth)); + } + } + frame->multiframe = 1; + gdk_pixbuf_animation_iter_advance(it, &time_val); + status = fn_load(frame, context); + if (status != SIXEL_OK) { + goto end; + } + frame->frame_no++; + } + + ++frame->loop_count; + + if (loop_control == SIXEL_LOOP_DISABLE || frame->frame_no == 1) { + break; + } + /* TODO: get loop property */ + if (loop_control == SIXEL_LOOP_AUTO && frame->loop_count == 1) { + break; + } + } + } + + status = SIXEL_OK; + +end: + if (frame) { + gdk_pixbuf_loader_close(loader, NULL); + g_object_unref(loader); + sixel_allocator_free(pchunk->allocator, frame->pixels); + sixel_allocator_free(pchunk->allocator, frame->palette); + sixel_allocator_free(pchunk->allocator, frame); + } + + return status; + +} +#endif /* HAVE_GDK_PIXBUF2 */ + +#ifdef HAVE_GD +static int +detect_file_format(int len, unsigned char *data) +{ + if (memcmp("TRUEVISION", data + len - 18, 10) == 0) { + return SIXEL_FORMAT_TGA; + } + + if (memcmp("GIF", data, 3) == 0) { + return SIXEL_FORMAT_GIF; + } + + if (memcmp("\x89\x50\x4E\x47\x0D\x0A\x1A\x0A", data, 8) == 0) { + return SIXEL_FORMAT_PNG; + } + + if (memcmp("BM", data, 2) == 0) { + return SIXEL_FORMAT_BMP; + } + + if (memcmp("\xFF\xD8", data, 2) == 0) { + return SIXEL_FORMAT_JPG; + } + + if (memcmp("\x00\x00", data, 2) == 0) { + return SIXEL_FORMAT_WBMP; + } + + if (memcmp("\x4D\x4D", data, 2) == 0) { + return SIXEL_FORMAT_TIFF; + } + + if (memcmp("\x49\x49", data, 2) == 0) { + return SIXEL_FORMAT_TIFF; + } + + if (memcmp("\033P", data, 2) == 0) { + return SIXEL_FORMAT_SIXEL; + } + + if (data[0] == 0x90 && (data[len-1] == 0x9C || data[len-2] == 0x9C)) { + return SIXEL_FORMAT_SIXEL; + } + + if (data[0] == 'P' && data[1] >= '1' && data[1] <= '6') { + return SIXEL_FORMAT_PNM; + } + + if (memcmp("gd2", data, 3) == 0) { + return SIXEL_FORMAT_GD2; + } + + if (memcmp("8BPS", data, 4) == 0) { + return SIXEL_FORMAT_PSD; + } + + if (memcmp("#?RADIANCE\n", data, 11) == 0) { + return SIXEL_FORMAT_HDR; + } + + return (-1); +} + + +static SIXELSTATUS +load_with_gd( + sixel_chunk_t const /* in */ *pchunk, /* image data */ + int /* in */ fstatic, /* static */ + int /* in */ fuse_palette, /* whether to use palette if possible */ + int /* in */ reqcolors, /* reqcolors */ + unsigned char /* in */ *bgcolor, /* background color */ + int /* in */ loop_control, /* one of enum loop_control */ + sixel_load_image_function /* in */ fn_load, /* callback */ + void /* in/out */ *context /* private data for callback */ +) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned char *p; + gdImagePtr im; + int x, y; + int c; + sixel_frame_t *frame = NULL; + + (void) fstatic; + (void) fuse_palette; + (void) reqcolors; + (void) bgcolor; + (void) loop_control; + + status = sixel_frame_new(&frame, pchunk->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + switch (detect_file_format(pchunk->size, pchunk->buffer)) { +#if 0 +# if HAVE_DECL_GDIMAGECREATEFROMGIFPTR + case SIXEL_FORMAT_GIF: + im = gdImageCreateFromGifPtr(pchunk->size, pchunk->buffer); + break; +# endif /* HAVE_DECL_GDIMAGECREATEFROMGIFPTR */ +#endif +#if HAVE_DECL_GDIMAGECREATEFROMPNGPTR + case SIXEL_FORMAT_PNG: + im = gdImageCreateFromPngPtr(pchunk->size, pchunk->buffer); + break; +#endif /* HAVE_DECL_GDIMAGECREATEFROMPNGPTR */ +#if HAVE_DECL_GDIMAGECREATEFROMBMPPTR + case SIXEL_FORMAT_BMP: + im = gdImageCreateFromBmpPtr(pchunk->size, pchunk->buffer); + break; +#endif /* HAVE_DECL_GDIMAGECREATEFROMBMPPTR */ + case SIXEL_FORMAT_JPG: +#if HAVE_DECL_GDIMAGECREATEFROMJPEGPTREX + im = gdImageCreateFromJpegPtrEx(pchunk->size, pchunk->buffer, 1); +#elif HAVE_DECL_GDIMAGECREATEFROMJPEGPTR + im = gdImageCreateFromJpegPtr(pchunk->size, pchunk->buffer); +#endif /* HAVE_DECL_GDIMAGECREATEFROMJPEGPTREX */ + break; +#if HAVE_DECL_GDIMAGECREATEFROMTGAPTR + case SIXEL_FORMAT_TGA: + im = gdImageCreateFromTgaPtr(pchunk->size, pchunk->buffer); + break; +#endif /* HAVE_DECL_GDIMAGECREATEFROMTGAPTR */ +#if HAVE_DECL_GDIMAGECREATEFROMWBMPPTR + case SIXEL_FORMAT_WBMP: + im = gdImageCreateFromWBMPPtr(pchunk->size, pchunk->buffer); + break; +#endif /* HAVE_DECL_GDIMAGECREATEFROMWBMPPTR */ +#if HAVE_DECL_GDIMAGECREATEFROMTIFFPTR + case SIXEL_FORMAT_TIFF: + im = gdImageCreateFromTiffPtr(pchunk->size, pchunk->buffer); + break; +#endif /* HAVE_DECL_GDIMAGECREATEFROMTIFFPTR */ +#if HAVE_DECL_GDIMAGECREATEFROMGD2PTR + case SIXEL_FORMAT_GD2: + im = gdImageCreateFromGd2Ptr(pchunk->size, pchunk->buffer); + break; +#endif /* HAVE_DECL_GDIMAGECREATEFROMGD2PTR */ + default: + status = SIXEL_GD_ERROR; + sixel_helper_set_additional_message( + "unexpected image format detected."); + goto end; + } + + if (im == NULL) { + status = SIXEL_GD_ERROR; + /* TODO: retrieve error detail */ + goto end; + } + + if (!gdImageTrueColor(im)) { +#if HAVE_DECL_GDIMAGEPALETTETOTRUECOLOR + if (!gdImagePaletteToTrueColor(im)) { + status = SIXEL_GD_ERROR; + /* TODO: retrieve error detail */ + goto end; + } +#else + status = SIXEL_GD_ERROR; + /* TODO: retrieve error detail */ + goto end; +#endif + } + + frame->width = gdImageSX(im); + frame->height = gdImageSY(im); + frame->pixelformat = SIXEL_PIXELFORMAT_RGB888; + p = frame->pixels = sixel_allocator_malloc(pchunk->allocator, (size_t)(frame->width * frame->height * 3)); + if (frame->pixels == NULL) { + sixel_helper_set_additional_message( + "load_with_gd: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + gdImageDestroy(im); + goto end; + } + for (y = 0; y < frame->height; y++) { + for (x = 0; x < frame->width; x++) { + c = gdImageTrueColorPixel(im, x, y); + *p++ = gdTrueColorGetRed(c); + *p++ = gdTrueColorGetGreen(c); + *p++ = gdTrueColorGetBlue(c); + } + } + gdImageDestroy(im); + + status = fn_load(frame, context); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + +#endif /* HAVE_GD */ + + +/* load image from file */ + +SIXELAPI SIXELSTATUS +sixel_helper_load_image_file( + char const /* in */ *filename, /* source file name */ + int /* in */ fstatic, /* whether to extract static image from animated gif */ + int /* in */ fuse_palette, /* whether to use paletted image, set non-zero value to try to get paletted image */ + int /* in */ reqcolors, /* requested number of colors, should be equal or less than SIXEL_PALETTE_MAX */ + unsigned char /* in */ *bgcolor, /* background color, may be NULL */ + int /* in */ loop_control, /* one of enum loopControl */ + sixel_load_image_function /* in */ fn_load, /* callback */ + int /* in */ finsecure, /* true if do not verify SSL */ + int const /* in */ *cancel_flag, /* cancel flag, may be NULL */ + void /* in/out */ *context, /* private data which is passed to callback function as an argument, may be NULL */ + sixel_allocator_t /* in */ *allocator /* allocator object, may be NULL */ +) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_chunk_t *pchunk = NULL; + + /* normalize reqested colors */ + if (reqcolors > SIXEL_PALETTE_MAX) { + reqcolors = SIXEL_PALETTE_MAX; + } + + /* create new chunk object from file */ + status = sixel_chunk_new(&pchunk, filename, finsecure, cancel_flag, allocator); + if (status != SIXEL_OK) { + goto end; + } + + /* if input date is empty or 1 byte LF, ignore it and return successfully */ + if (pchunk->size == 0 || (pchunk->size == 1 && *pchunk->buffer == '\n')) { + status = SIXEL_OK; + goto end; + } + + /* assertion */ + if (pchunk->buffer == NULL || pchunk->max_size == 0) { + status = SIXEL_LOGIC_ERROR; + goto end; + } + + status = SIXEL_FALSE; +#ifdef HAVE_GDK_PIXBUF2 + if (SIXEL_FAILED(status)) { + status = load_with_gdkpixbuf(pchunk, + fstatic, + fuse_palette, + reqcolors, + bgcolor, + loop_control, + fn_load, + context); + } +#endif /* HAVE_GDK_PIXBUF2 */ +#if HAVE_GD + if (SIXEL_FAILED(status)) { + status = load_with_gd(pchunk, + fstatic, + fuse_palette, + reqcolors, + bgcolor, + loop_control, + fn_load, + context); + } +#endif /* HAVE_GD */ + if (SIXEL_FAILED(status)) { + status = load_with_builtin(pchunk, + fstatic, + fuse_palette, + reqcolors, + bgcolor, + loop_control, + fn_load, + context); + } + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + sixel_chunk_destroy(pchunk); + + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + unsigned char *ptr = malloc(16); + + nret = EXIT_SUCCESS; + goto error; + + nret = EXIT_SUCCESS; + +error: + free(ptr); + return nret; +} + + +SIXELAPI int +sixel_loader_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/loader.h b/ThirdParty/libsixel/src/loader.h new file mode 100644 index 0000000000..474d084975 --- /dev/null +++ b/ThirdParty/libsixel/src/loader.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_LOADER_H +#define LIBSIXEL_LOADER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if HAVE_TESTS +int +sixel_loader_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_LOADER_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/malloc_stub.c b/ThirdParty/libsixel/src/malloc_stub.c new file mode 100644 index 0000000000..7037526445 --- /dev/null +++ b/ThirdParty/libsixel/src/malloc_stub.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +#endif /* STDC_HEADERS */ +#if HAVE_SYS_TYPES_H +# include +#endif /* HAVE_SYS_TYPES_H */ +#if HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#if HAVE_MEMORY_H +# include +#endif /* HAVE_MEMORY_H */ + +#if !HAVE_MALLOC +#undef malloc +void * +rpl_malloc(size_t n) +{ + if(n == 0) { + n = 1; + } + return (void *)malloc(n); +} +#endif /* !HAVE_MALLOC */ + +#if !HAVE_REALLOC +#undef realloc +void * +rpl_realloc(void *p, size_t n) +{ + if (n == 0) { + n = 1; + } + if (p == 0) { + return malloc(n); + } + return (void *)realloc(p, n); +} +#endif /* !HAVE_REALLOC */ + +#if 0 +int +rpl_posix_memalign(void **memptr, size_t alignment, size_t size) +{ +#if HAVE_POSIX_MEMALIGN + return posix_memalign(memptr, alignment, size); +#elif HAVE_ALIGNED_ALLOC + *memptr = aligned_alloc(alignment, size); + return *memptr ? 0: ENOMEM; +#elif HAVE_MEMALIGN + *memptr = memalign(alignment, size); + return *memptr ? 0: ENOMEM; +#elif HAVE__ALIGNED_MALLOC + return _aligned_malloc(size, alignment); +#else +# error +#endif /* _MSC_VER */ +} +#endif + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/malloc_stub.h b/ThirdParty/libsixel/src/malloc_stub.h new file mode 100644 index 0000000000..2f2621e894 --- /dev/null +++ b/ThirdParty/libsixel/src/malloc_stub.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef MALLOC_STUB_H +#define MALLOC_STUB_H + +#if HAVE_SYS_TYPES_H +#include +#endif /* HAVE_SYS_TYPES_H */ + +#if !HAVE_MALLOC +void * rpl_malloc(size_t n); +#endif /* !HAVE_MALLOC */ + +#if !HAVE_REALLOC +void * rpl_realloc(void *p, size_t n); +#endif /* !HAVE_REALLOC */ + +#if 0 +int rpl_posix_memalign(void **memptr, size_t alignment, size_t size); +#endif + +#endif /* MALLOC_STUB_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/output.c b/ThirdParty/libsixel/src/output.c new file mode 100644 index 0000000000..1b4c37abb6 --- /dev/null +++ b/ThirdParty/libsixel/src/output.c @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2014-2019 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_ASSERT_H +# include +#endif /* HAVE_ASSERT_H */ + +#include +#include "output.h" + + +/* create new output context object */ +SIXELAPI SIXELSTATUS +sixel_output_new( + sixel_output_t /* out */ **output, + sixel_write_function /* in */ fn_write, + void /* in */ *priv, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + size_t size; + + if (allocator == NULL) { + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + } else { + sixel_allocator_ref(allocator); + } + size = sizeof(sixel_output_t) + SIXEL_OUTPUT_PACKET_SIZE * 2; + + *output = (sixel_output_t *)sixel_allocator_malloc(allocator, size); + if (*output == NULL) { + sixel_helper_set_additional_message( + "sixel_output_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + (*output)->ref = 1; + (*output)->has_8bit_control = 0; + (*output)->has_sdm_glitch = 0; + (*output)->has_gri_arg_limit = 1; + (*output)->skip_dcs_envelope = 0; + (*output)->palette_type = SIXEL_PALETTETYPE_AUTO; + (*output)->fn_write = fn_write; + (*output)->save_pixel = 0; + (*output)->save_count = 0; + (*output)->active_palette = (-1); + (*output)->node_top = NULL; + (*output)->node_free = NULL; + (*output)->priv = priv; + (*output)->pos = 0; + (*output)->penetrate_multiplexer = 0; + (*output)->encode_policy = SIXEL_ENCODEPOLICY_AUTO; + (*output)->allocator = allocator; + + status = SIXEL_OK; + +end: + return status; +} + + +/* deprecated: create an output object */ +SIXELAPI sixel_output_t * +sixel_output_create(sixel_write_function fn_write, void *priv) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_output_t *output = NULL; + + status = sixel_output_new(&output, fn_write, priv, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + return output; +} + + +/* destroy output context object */ +SIXELAPI void +sixel_output_destroy(sixel_output_t *output) +{ + sixel_allocator_t *allocator; + + if (output) { + allocator = output->allocator; + sixel_allocator_free(allocator, output); + sixel_allocator_unref(allocator); + } +} + + +/* increase reference count of output context object (thread-unsafe) */ +SIXELAPI void +sixel_output_ref(sixel_output_t *output) +{ + /* TODO: be thread-safe */ + ++output->ref; +} + + +/* decrease reference count of output context object (thread-unsafe) */ +SIXELAPI void +sixel_output_unref(sixel_output_t *output) +{ + /* TODO: be thread-safe */ + if (output) { + assert(output->ref > 0); + output->ref--; + if (output->ref == 0) { + sixel_output_destroy(output); + } + } +} + + +/* get 8bit output mode which indicates whether it uses C1 control characters */ +SIXELAPI int +sixel_output_get_8bit_availability(sixel_output_t *output) +{ + return output->has_8bit_control; +} + + +/* set 8bit output mode state */ +SIXELAPI void +sixel_output_set_8bit_availability(sixel_output_t *output, int availability) +{ + output->has_8bit_control = availability; +} + + +/* set whether limit arguments of DECGRI('!') to 255 */ +SIXELAPI void +sixel_output_set_gri_arg_limit( + sixel_output_t /* in */ *output, /* output context */ + int /* in */ value) /* 0: don't limit arguments of DECGRI + 1: limit arguments of DECGRI to 255 */ +{ + output->has_gri_arg_limit = value; +} + + +/* set GNU Screen penetration feature enable or disable */ +SIXELAPI void +sixel_output_set_penetrate_multiplexer(sixel_output_t *output, int penetrate) +{ + output->penetrate_multiplexer = penetrate; +} + + +/* set whether we skip DCS envelope */ +SIXELAPI void +sixel_output_set_skip_dcs_envelope(sixel_output_t *output, int skip) +{ + output->skip_dcs_envelope = skip; +} + + +/* set palette type: RGB or HLS */ +SIXELAPI void +sixel_output_set_palette_type(sixel_output_t *output, int palettetype) +{ + output->palette_type = palettetype; +} + + +/* set encodeing policy: auto, fast or size */ +SIXELAPI void +sixel_output_set_encode_policy(sixel_output_t *output, int encode_policy) +{ + output->encode_policy = encode_policy; +} + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/output.h b/ThirdParty/libsixel/src/output.h new file mode 100644 index 0000000000..197d09781d --- /dev/null +++ b/ThirdParty/libsixel/src/output.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_OUTPUT_H +#define LIBSIXEL_OUTPUT_H + +typedef struct sixel_node { + struct sixel_node *next; + int pal; + int sx; + int mx; + char *map; +} sixel_node_t; + +struct sixel_output { + + int ref; + sixel_allocator_t *allocator; + + /* compatiblity flags */ + + /* 0: 7bit terminal, + * 1: 8bit terminal */ + unsigned char has_8bit_control; + + /* 0: the terminal has sixel scrolling + * 1: the terminal does not have sixel scrolling */ + unsigned char has_sixel_scrolling; + + /* 1: the argument of repeat introducer(DECGRI) is not limitted + 0: the argument of repeat introducer(DECGRI) is limitted 255 */ + unsigned char has_gri_arg_limit; + + /* 0: DECSDM set (CSI ? 80 h) enables sixel scrolling + 1: DECSDM set (CSI ? 80 h) disables sixel scrolling */ + unsigned char has_sdm_glitch; + + /* 0: do not skip DCS envelope + * 1: skip DCS envelope */ + unsigned char skip_dcs_envelope; + + /* PALETTETYPE_AUTO: select palette type automatically + * PALETTETYPE_HLS : HLS color space + * PALETTETYPE_RGB : RGB color space */ + unsigned char palette_type; + + sixel_write_function fn_write; + + int save_pixel; + int save_count; + int active_palette; + + sixel_node_t *node_top; + sixel_node_t *node_free; + + int penetrate_multiplexer; + int encode_policy; + + void *priv; + int pos; + unsigned char buffer[1]; +}; + +#endif /* LIBSIXEL_OUTPUT_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/pixelformat.c b/ThirdParty/libsixel/src/pixelformat.c new file mode 100644 index 0000000000..9d9201bdca --- /dev/null +++ b/ThirdParty/libsixel/src/pixelformat.c @@ -0,0 +1,725 @@ +/* + * Copyright (c) 2014-2019 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_MEMORY_H +# include +#endif /* HAVE_MEMORY_H */ + +#include + +static void +get_rgb(unsigned char const *data, + int const pixelformat, + int depth, + unsigned char *r, + unsigned char *g, + unsigned char *b) +{ + unsigned int pixels = 0; +#if SWAP_BYTES + unsigned int low; + unsigned int high; +#endif + int count = 0; + + while (count < depth) { + pixels = *(data + count) | (pixels << 8); + count++; + } + + /* TODO: we should swap bytes (only necessary on LSByte first hardware?) */ +#if SWAP_BYTES + if (depth == 2) { + low = pixels & 0xff; + high = (pixels >> 8) & 0xff; + pixels = (low << 8) | high; + } +#endif + + switch (pixelformat) { + case SIXEL_PIXELFORMAT_RGB555: + *r = ((pixels >> 10) & 0x1f) << 3; + *g = ((pixels >> 5) & 0x1f) << 3; + *b = ((pixels >> 0) & 0x1f) << 3; + break; + case SIXEL_PIXELFORMAT_RGB565: + *r = ((pixels >> 11) & 0x1f) << 3; + *g = ((pixels >> 5) & 0x3f) << 2; + *b = ((pixels >> 0) & 0x1f) << 3; + break; + case SIXEL_PIXELFORMAT_RGB888: + *r = (pixels >> 16) & 0xff; + *g = (pixels >> 8) & 0xff; + *b = (pixels >> 0) & 0xff; + break; + case SIXEL_PIXELFORMAT_BGR555: + *r = ((pixels >> 0) & 0x1f) << 3; + *g = ((pixels >> 5) & 0x1f) << 3; + *b = ((pixels >> 10) & 0x1f) << 3; + break; + case SIXEL_PIXELFORMAT_BGR565: + *r = ((pixels >> 0) & 0x1f) << 3; + *g = ((pixels >> 5) & 0x3f) << 2; + *b = ((pixels >> 11) & 0x1f) << 3; + break; + case SIXEL_PIXELFORMAT_BGR888: + *r = (pixels >> 0) & 0xff; + *g = (pixels >> 8) & 0xff; + *b = (pixels >> 16) & 0xff; + break; + case SIXEL_PIXELFORMAT_RGBA8888: + *r = (pixels >> 24) & 0xff; + *g = (pixels >> 16) & 0xff; + *b = (pixels >> 8) & 0xff; + break; + case SIXEL_PIXELFORMAT_ARGB8888: + *r = (pixels >> 16) & 0xff; + *g = (pixels >> 8) & 0xff; + *b = (pixels >> 0) & 0xff; + break; + case SIXEL_PIXELFORMAT_BGRA8888: + *r = (pixels >> 8) & 0xff; + *g = (pixels >> 16) & 0xff; + *b = (pixels >> 24) & 0xff; + break; + case SIXEL_PIXELFORMAT_ABGR8888: + *r = (pixels >> 0) & 0xff; + *g = (pixels >> 8) & 0xff; + *b = (pixels >> 16) & 0xff; + break; + case SIXEL_PIXELFORMAT_GA88: + *r = *g = *b = (pixels >> 8) & 0xff; + break; + case SIXEL_PIXELFORMAT_G8: + case SIXEL_PIXELFORMAT_AG88: + *r = *g = *b = pixels & 0xff; + break; + default: + *r = *g = *b = 0; + break; + } +} + + +SIXELAPI int +sixel_helper_compute_depth(int pixelformat) +{ + int depth = (-1); /* unknown */ + + switch (pixelformat) { + case SIXEL_PIXELFORMAT_ARGB8888: + case SIXEL_PIXELFORMAT_RGBA8888: + case SIXEL_PIXELFORMAT_ABGR8888: + case SIXEL_PIXELFORMAT_BGRA8888: + depth = 4; + break; + case SIXEL_PIXELFORMAT_RGB888: + case SIXEL_PIXELFORMAT_BGR888: + depth = 3; + break; + case SIXEL_PIXELFORMAT_RGB555: + case SIXEL_PIXELFORMAT_RGB565: + case SIXEL_PIXELFORMAT_BGR555: + case SIXEL_PIXELFORMAT_BGR565: + case SIXEL_PIXELFORMAT_AG88: + case SIXEL_PIXELFORMAT_GA88: + depth = 2; + break; + case SIXEL_PIXELFORMAT_G1: + case SIXEL_PIXELFORMAT_G2: + case SIXEL_PIXELFORMAT_G4: + case SIXEL_PIXELFORMAT_G8: + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + case SIXEL_PIXELFORMAT_PAL8: + depth = 1; + break; + default: + break; + } + + return depth; +} + + +static void +expand_rgb(unsigned char *dst, + unsigned char const *src, + int width, int height, + int pixelformat, int depth) +{ + int x; + int y; + int dst_offset; + int src_offset; + unsigned char r, g, b; + + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + src_offset = depth * (y * width + x); + dst_offset = 3 * (y * width + x); + get_rgb(src + src_offset, pixelformat, depth, &r, &g, &b); + + *(dst + dst_offset + 0) = r; + *(dst + dst_offset + 1) = g; + *(dst + dst_offset + 2) = b; + } + } +} + + +static SIXELSTATUS +expand_palette(unsigned char *dst, unsigned char const *src, + int width, int height, int const pixelformat) +{ + SIXELSTATUS status = SIXEL_FALSE; + int x; + int y; + int i; + int bpp; /* bit per plane */ + + switch (pixelformat) { + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_G1: + bpp = 1; + break; + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_G2: + bpp = 2; + break; + case SIXEL_PIXELFORMAT_PAL4: + case SIXEL_PIXELFORMAT_G4: + bpp = 4; + break; + case SIXEL_PIXELFORMAT_PAL8: + case SIXEL_PIXELFORMAT_G8: + for (i = 0; i < width * height; ++i, ++src) { + *dst++ = *src; + } + status = SIXEL_OK; + goto end; + default: + status = SIXEL_BAD_ARGUMENT; + sixel_helper_set_additional_message( + "expand_palette: invalid pixelformat."); + goto end; + } + +#if HAVE_DEBUG + fprintf(stderr, "expanding PAL%d to PAL8...\n", bpp); +#endif + + for (y = 0; y < height; ++y) { + for (x = 0; x < width * bpp / 8; ++x) { + for (i = 0; i < 8 / bpp; ++i) { + *dst++ = *src >> (8 / bpp - 1 - i) * bpp & ((1 << bpp) - 1); + } + src++; + } + x = width - x * 8 / bpp; + if (x > 0) { + for (i = 0; i < x; ++i) { + *dst++ = *src >> (8 - (i + 1) * bpp) & ((1 << bpp) - 1); + } + src++; + } + } + + status = SIXEL_OK; + +end: + return status; +} + + +SIXELAPI SIXELSTATUS +sixel_helper_normalize_pixelformat( + unsigned char /* out */ *dst, /* destination buffer */ + int /* out */ *dst_pixelformat, /* converted pixelformat */ + unsigned char const /* in */ *src, /* source pixels */ + int /* in */ src_pixelformat, /* format of source image */ + int /* in */ width, /* width of source image */ + int /* in */ height) /* height of source image */ +{ + SIXELSTATUS status = SIXEL_FALSE; + + switch (src_pixelformat) { + case SIXEL_PIXELFORMAT_G8: + expand_rgb(dst, src, width, height, src_pixelformat, 1); + *dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_RGB565: + case SIXEL_PIXELFORMAT_RGB555: + case SIXEL_PIXELFORMAT_BGR565: + case SIXEL_PIXELFORMAT_BGR555: + case SIXEL_PIXELFORMAT_GA88: + case SIXEL_PIXELFORMAT_AG88: + expand_rgb(dst, src, width, height, src_pixelformat, 2); + *dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_RGB888: + case SIXEL_PIXELFORMAT_BGR888: + expand_rgb(dst, src, width, height, src_pixelformat, 3); + *dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_RGBA8888: + case SIXEL_PIXELFORMAT_ARGB8888: + case SIXEL_PIXELFORMAT_BGRA8888: + case SIXEL_PIXELFORMAT_ABGR8888: + expand_rgb(dst, src, width, height, src_pixelformat, 4); + *dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + break; + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + *dst_pixelformat = SIXEL_PIXELFORMAT_PAL8; + status = expand_palette(dst, src, width, height, src_pixelformat); + if (SIXEL_FAILED(status)) { + goto end; + } + break; + case SIXEL_PIXELFORMAT_G1: + case SIXEL_PIXELFORMAT_G2: + case SIXEL_PIXELFORMAT_G4: + *dst_pixelformat = SIXEL_PIXELFORMAT_G8; + status = expand_palette(dst, src, width, height, src_pixelformat); + if (SIXEL_FAILED(status)) { + goto end; + } + break; + case SIXEL_PIXELFORMAT_PAL8: + memcpy(dst, src, (size_t)(width * height)); + *dst_pixelformat = src_pixelformat; + break; + default: + status = SIXEL_BAD_ARGUMENT; + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_RGB888; + unsigned char src[] = { 0x46, 0xf3, 0xe5 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if ((dst[0] << 16 | dst[1] << 8 | dst[2]) != (src[0] << 16 | src[1] << 8 | src[2])) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test1"); + return nret; +} + + +static int +test2(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_RGB555; + unsigned char src[] = { 0x47, 0x9c }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if ((dst[0] >> 3 << 10 | dst[1] >> 3 << 5 | dst[2] >> 3) != (src[0] << 8 | src[1])) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test2"); + return nret; +} + + +static int +test3(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_RGB565; + unsigned char src[] = { 0x47, 0x9c }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if ((dst[0] >> 3 << 11 | dst[1] >> 2 << 5 | dst[2] >> 3) != (src[0] << 8 | src[1])) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test3"); + return nret; +} + + +static int +test4(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_BGR888; + unsigned char src[] = { 0x46, 0xf3, 0xe5 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if ((dst[2] << 16 | dst[1] << 8 | dst[0]) != (src[0] << 16 | src[1] << 8 | src[2])) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test4"); + return nret; +} + + +static int +test5(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_BGR555; + unsigned char src[] = { 0x23, 0xc8 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if ((dst[2] >> 3 << 10 | dst[1] >> 3 << 5 | dst[0] >> 3) != (src[0] << 8 | src[1])) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test5"); + return nret; +} + + +static int +test6(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_BGR565; + unsigned char src[] = { 0x47, 0x88 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if ((dst[2] >> 3 << 11 | dst[1] >> 2 << 5 | dst[0] >> 3) != (src[0] << 8 | src[1])) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test6"); + return nret; +} + + +static int +test7(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_AG88; + unsigned char src[] = { 0x47, 0x88 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if (dst[0] != src[1]) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test7"); + return nret; +} + + +static int +test8(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_GA88; + unsigned char src[] = { 0x47, 0x88 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if (dst[0] != src[0]) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test8"); + return nret; +} + + +static int +test9(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_RGBA8888; + unsigned char src[] = { 0x46, 0xf3, 0xe5, 0xf0 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if (dst[0] != src[0]) { + goto error; + } + if (dst[1] != src[1]) { + goto error; + } + if (dst[2] != src[2]) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test8"); + return nret; +} + + +static int +test10(void) +{ + unsigned char dst[3]; + int dst_pixelformat = SIXEL_PIXELFORMAT_RGB888; + int src_pixelformat = SIXEL_PIXELFORMAT_ARGB8888; + unsigned char src[] = { 0x46, 0xf3, 0xe5, 0xf0 }; + int ret = 0; + + int nret = EXIT_FAILURE; + + ret = sixel_helper_normalize_pixelformat(dst, + &dst_pixelformat, + src, + src_pixelformat, + 1, + 1); + if (ret != 0) { + goto error; + } + if (dst_pixelformat != SIXEL_PIXELFORMAT_RGB888) { + goto error; + } + if (dst[0] != src[1]) { + goto error; + } + if (dst[1] != src[2]) { + goto error; + } + if (dst[2] != src[3]) { + goto error; + } + return EXIT_SUCCESS; + +error: + perror("test8"); + return nret; +} + + +SIXELAPI int +sixel_pixelformat_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + test3, + test4, + test5, + test6, + test7, + test8, + test9, + test10, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/pixelformat.h b/ThirdParty/libsixel/src/pixelformat.h new file mode 100644 index 0000000000..c6aecb3075 --- /dev/null +++ b/ThirdParty/libsixel/src/pixelformat.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_PIXELFORMAT_H +#define LIBSIXEL_PIXELFORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if HAVE_TESTS +int +sixel_pixelformat_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_PIXELFORMAT_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/quant.c b/ThirdParty/libsixel/src/quant.c new file mode 100644 index 0000000000..dbad7c8947 --- /dev/null +++ b/ThirdParty/libsixel/src/quant.c @@ -0,0 +1,1529 @@ +/* + * + * mediancut algorithm implementation is imported from pnmcolormap.c + * in netpbm library. + * http://netpbm.sourceforge.net/ + * + * ******************************************************************************* + * original license block of pnmcolormap.c + * ******************************************************************************* + * + * Derived from ppmquant, originally by Jef Poskanzer. + * + * Copyright (C) 1989, 1991 by Jef Poskanzer. + * Copyright (C) 2001 by Bryan Henderson. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. This software is provided "as is" without express or + * implied warranty. + * + * ****************************************************************************** + * + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_MATH_H +#include +#endif /* HAVE_MATH_H */ +#if HAVE_LIMITS_H +# include +#endif /* HAVE_MATH_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_MATH_H */ + +#include "quant.h" + +#if HAVE_DEBUG +#define quant_trace fprintf +#else +static inline void quant_trace(FILE *f, ...) { (void) f; } +#endif + +/***************************************************************************** + * + * quantization + * + *****************************************************************************/ + +typedef struct box* boxVector; +struct box { + unsigned int ind; + unsigned int colors; + unsigned int sum; +}; + +typedef unsigned long sample; +typedef sample * tuple; + +struct tupleint { + /* An ordered pair of a tuple value and an integer, such as you + would find in a tuple table or tuple hash. + Note that this is a variable length structure. + */ + unsigned int value; + sample tuple[1]; + /* This is actually a variable size array -- its size is the + depth of the tuple in question. Some compilers do not let us + declare a variable length array. + */ +}; +typedef struct tupleint ** tupletable; + +typedef struct { + unsigned int size; + tupletable table; +} tupletable2; + +static unsigned int compareplanePlane; + /* This is a parameter to compareplane(). We use this global variable + so that compareplane() can be called by qsort(), to compare two + tuples. qsort() doesn't pass any arguments except the two tuples. + */ +static int +compareplane(const void * const arg1, + const void * const arg2) +{ + int lhs, rhs; + + typedef const struct tupleint * const * const sortarg; + sortarg comparandPP = (sortarg) arg1; + sortarg comparatorPP = (sortarg) arg2; + lhs = (int)(*comparandPP)->tuple[compareplanePlane]; + rhs = (int)(*comparatorPP)->tuple[compareplanePlane]; + + return lhs - rhs; +} + + +static int +sumcompare(const void * const b1, const void * const b2) +{ + return (int)((boxVector)b2)->sum - (int)((boxVector)b1)->sum; +} + + +static SIXELSTATUS +alloctupletable( + tupletable /* out */ *result, + unsigned int const /* in */ depth, + unsigned int const /* in */ size, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + enum { message_buffer_size = 256 }; + char message[message_buffer_size]; + int nwrite; + unsigned int mainTableSize; + unsigned int tupleIntSize; + unsigned int allocSize; + void * pool; + tupletable tbl; + unsigned int i; + + if (UINT_MAX / sizeof(struct tupleint) < size) { + nwrite = sprintf(message, + "size %u is too big for arithmetic", + size); + if (nwrite > 0) { + sixel_helper_set_additional_message(message); + } + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + mainTableSize = size * sizeof(struct tupleint *); + tupleIntSize = sizeof(struct tupleint) - sizeof(sample) + + depth * sizeof(sample); + + /* To save the enormous amount of time it could take to allocate + each individual tuple, we do a trick here and allocate everything + as a single malloc block and suballocate internally. + */ + if ((UINT_MAX - mainTableSize) / tupleIntSize < size) { + nwrite = sprintf(message, + "size %u is too big for arithmetic", + size); + if (nwrite > 0) { + sixel_helper_set_additional_message(message); + } + status = SIXEL_RUNTIME_ERROR; + goto end; + } + + allocSize = mainTableSize + size * tupleIntSize; + + pool = sixel_allocator_malloc(allocator, allocSize); + if (pool == NULL) { + sprintf(message, + "unable to allocate %u bytes for a %u-entry " + "tuple table", + allocSize, size); + sixel_helper_set_additional_message(message); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + tbl = (tupletable) pool; + + for (i = 0; i < size; ++i) + tbl[i] = (struct tupleint *) + ((char*)pool + mainTableSize + i * tupleIntSize); + + *result = tbl; + + status = SIXEL_OK; + +end: + return status; +} + + +/* +** Here is the fun part, the median-cut colormap generator. This is based +** on Paul Heckbert's paper "Color Image Quantization for Frame Buffer +** Display", SIGGRAPH '82 Proceedings, page 297. +*/ + +static tupletable2 +newColorMap(unsigned int const newcolors, unsigned int const depth, sixel_allocator_t *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + tupletable2 colormap; + unsigned int i; + + colormap.size = 0; + status = alloctupletable(&colormap.table, depth, newcolors, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + if (colormap.table) { + for (i = 0; i < newcolors; ++i) { + unsigned int plane; + for (plane = 0; plane < depth; ++plane) + colormap.table[i]->tuple[plane] = 0; + } + colormap.size = newcolors; + } + +end: + return colormap; +} + + +static boxVector +newBoxVector( + unsigned int const /* in */ colors, + unsigned int const /* in */ sum, + unsigned int const /* in */ newcolors, + sixel_allocator_t /* in */ *allocator) +{ + boxVector bv; + + bv = (boxVector)sixel_allocator_malloc(allocator, + sizeof(struct box) * (size_t)newcolors); + if (bv == NULL) { + quant_trace(stderr, "out of memory allocating box vector table\n"); + return NULL; + } + + /* Set up the initial box. */ + bv[0].ind = 0; + bv[0].colors = colors; + bv[0].sum = sum; + + return bv; +} + + +static void +findBoxBoundaries(tupletable2 const colorfreqtable, + unsigned int const depth, + unsigned int const boxStart, + unsigned int const boxSize, + sample minval[], + sample maxval[]) +{ +/*---------------------------------------------------------------------------- + Go through the box finding the minimum and maximum of each + component - the boundaries of the box. +-----------------------------------------------------------------------------*/ + unsigned int plane; + unsigned int i; + + for (plane = 0; plane < depth; ++plane) { + minval[plane] = colorfreqtable.table[boxStart]->tuple[plane]; + maxval[plane] = minval[plane]; + } + + for (i = 1; i < boxSize; ++i) { + for (plane = 0; plane < depth; ++plane) { + sample const v = colorfreqtable.table[boxStart + i]->tuple[plane]; + if (v < minval[plane]) minval[plane] = v; + if (v > maxval[plane]) maxval[plane] = v; + } + } +} + + + +static unsigned int +largestByNorm(sample minval[], sample maxval[], unsigned int const depth) +{ + + unsigned int largestDimension; + unsigned int plane; + sample largestSpreadSoFar; + + largestSpreadSoFar = 0; + largestDimension = 0; + for (plane = 0; plane < depth; ++plane) { + sample const spread = maxval[plane]-minval[plane]; + if (spread > largestSpreadSoFar) { + largestDimension = plane; + largestSpreadSoFar = spread; + } + } + return largestDimension; +} + + + +static unsigned int +largestByLuminosity(sample minval[], sample maxval[], unsigned int const depth) +{ +/*---------------------------------------------------------------------------- + This subroutine presumes that the tuple type is either + BLACKANDWHITE, GRAYSCALE, or RGB (which implies pamP->depth is 1 or 3). + To save time, we don't actually check it. +-----------------------------------------------------------------------------*/ + unsigned int retval; + + double lumin_factor[3] = {0.2989, 0.5866, 0.1145}; + + if (depth == 1) { + retval = 0; + } else { + /* An RGB tuple */ + unsigned int largestDimension; + unsigned int plane; + double largestSpreadSoFar; + + largestSpreadSoFar = 0.0; + largestDimension = 0; + + for (plane = 0; plane < 3; ++plane) { + double const spread = + lumin_factor[plane] * (maxval[plane]-minval[plane]); + if (spread > largestSpreadSoFar) { + largestDimension = plane; + largestSpreadSoFar = spread; + } + } + retval = largestDimension; + } + return retval; +} + + + +static void +centerBox(unsigned int const boxStart, + unsigned int const boxSize, + tupletable2 const colorfreqtable, + unsigned int const depth, + tuple const newTuple) +{ + + unsigned int plane; + sample minval, maxval; + unsigned int i; + + for (plane = 0; plane < depth; ++plane) { + minval = maxval = colorfreqtable.table[boxStart]->tuple[plane]; + + for (i = 1; i < boxSize; ++i) { + sample v = colorfreqtable.table[boxStart + i]->tuple[plane]; + minval = minval < v ? minval: v; + maxval = maxval > v ? maxval: v; + } + newTuple[plane] = (minval + maxval) / 2; + } +} + + + +static void +averageColors(unsigned int const boxStart, + unsigned int const boxSize, + tupletable2 const colorfreqtable, + unsigned int const depth, + tuple const newTuple) +{ + unsigned int plane; + sample sum; + unsigned int i; + + for (plane = 0; plane < depth; ++plane) { + sum = 0; + + for (i = 0; i < boxSize; ++i) { + sum += colorfreqtable.table[boxStart + i]->tuple[plane]; + } + + newTuple[plane] = sum / boxSize; + } +} + + + +static void +averagePixels(unsigned int const boxStart, + unsigned int const boxSize, + tupletable2 const colorfreqtable, + unsigned int const depth, + tuple const newTuple) +{ + + unsigned int n; + /* Number of tuples represented by the box */ + unsigned int plane; + unsigned int i; + + /* Count the tuples in question */ + n = 0; /* initial value */ + for (i = 0; i < boxSize; ++i) { + n += (unsigned int)colorfreqtable.table[boxStart + i]->value; + } + + for (plane = 0; plane < depth; ++plane) { + sample sum; + + sum = 0; + + for (i = 0; i < boxSize; ++i) { + sum += colorfreqtable.table[boxStart + i]->tuple[plane] + * (unsigned int)colorfreqtable.table[boxStart + i]->value; + } + + newTuple[plane] = sum / n; + } +} + + + +static tupletable2 +colormapFromBv(unsigned int const newcolors, + boxVector const bv, + unsigned int const boxes, + tupletable2 const colorfreqtable, + unsigned int const depth, + int const methodForRep, + sixel_allocator_t *allocator) +{ + /* + ** Ok, we've got enough boxes. Now choose a representative color for + ** each box. There are a number of possible ways to make this choice. + ** One would be to choose the center of the box; this ignores any structure + ** within the boxes. Another method would be to average all the colors in + ** the box - this is the method specified in Heckbert's paper. A third + ** method is to average all the pixels in the box. + */ + tupletable2 colormap; + unsigned int bi; + + colormap = newColorMap(newcolors, depth, allocator); + if (!colormap.size) { + return colormap; + } + + for (bi = 0; bi < boxes; ++bi) { + switch (methodForRep) { + case SIXEL_REP_CENTER_BOX: + centerBox(bv[bi].ind, bv[bi].colors, + colorfreqtable, depth, + colormap.table[bi]->tuple); + break; + case SIXEL_REP_AVERAGE_COLORS: + averageColors(bv[bi].ind, bv[bi].colors, + colorfreqtable, depth, + colormap.table[bi]->tuple); + break; + case SIXEL_REP_AVERAGE_PIXELS: + averagePixels(bv[bi].ind, bv[bi].colors, + colorfreqtable, depth, + colormap.table[bi]->tuple); + break; + default: + quant_trace(stderr, "Internal error: " + "invalid value of methodForRep: %d\n", + methodForRep); + } + } + return colormap; +} + + +static SIXELSTATUS +splitBox(boxVector const bv, + unsigned int *const boxesP, + unsigned int const bi, + tupletable2 const colorfreqtable, + unsigned int const depth, + int const methodForLargest) +{ +/*---------------------------------------------------------------------------- + Split Box 'bi' in the box vector bv (so that bv contains one more box + than it did as input). Split it so that each new box represents about + half of the pixels in the distribution given by 'colorfreqtable' for + the colors in the original box, but with distinct colors in each of the + two new boxes. + + Assume the box contains at least two colors. +-----------------------------------------------------------------------------*/ + SIXELSTATUS status = SIXEL_FALSE; + unsigned int const boxStart = bv[bi].ind; + unsigned int const boxSize = bv[bi].colors; + unsigned int const sm = bv[bi].sum; + + enum { max_depth= 16 }; + sample minval[max_depth]; + sample maxval[max_depth]; + + /* assert(max_depth >= depth); */ + + unsigned int largestDimension; + /* number of the plane with the largest spread */ + unsigned int medianIndex; + unsigned int lowersum; + /* Number of pixels whose value is "less than" the median */ + + findBoxBoundaries(colorfreqtable, depth, boxStart, boxSize, + minval, maxval); + + /* Find the largest dimension, and sort by that component. I have + included two methods for determining the "largest" dimension; + first by simply comparing the range in RGB space, and second by + transforming into luminosities before the comparison. + */ + switch (methodForLargest) { + case SIXEL_LARGE_NORM: + largestDimension = largestByNorm(minval, maxval, depth); + break; + case SIXEL_LARGE_LUM: + largestDimension = largestByLuminosity(minval, maxval, depth); + break; + default: + sixel_helper_set_additional_message( + "Internal error: invalid value of methodForLargest."); + status = SIXEL_LOGIC_ERROR; + goto end; + } + + /* TODO: I think this sort should go after creating a box, + not before splitting. Because you need the sort to use + the SIXEL_REP_CENTER_BOX method of choosing a color to + represent the final boxes + */ + + /* Set the gross global variable 'compareplanePlane' as a + parameter to compareplane(), which is called by qsort(). + */ + compareplanePlane = largestDimension; + qsort((char*) &colorfreqtable.table[boxStart], boxSize, + sizeof(colorfreqtable.table[boxStart]), + compareplane); + + { + /* Now find the median based on the counts, so that about half + the pixels (not colors, pixels) are in each subdivision. */ + + unsigned int i; + + lowersum = colorfreqtable.table[boxStart]->value; /* initial value */ + for (i = 1; i < boxSize - 1 && lowersum < sm / 2; ++i) { + lowersum += colorfreqtable.table[boxStart + i]->value; + } + medianIndex = i; + } + /* Split the box, and sort to bring the biggest boxes to the top. */ + + bv[bi].colors = medianIndex; + bv[bi].sum = lowersum; + bv[*boxesP].ind = boxStart + medianIndex; + bv[*boxesP].colors = boxSize - medianIndex; + bv[*boxesP].sum = sm - lowersum; + ++(*boxesP); + qsort((char*) bv, *boxesP, sizeof(struct box), sumcompare); + + status = SIXEL_OK; + +end: + return status; +} + + + +static SIXELSTATUS +mediancut(tupletable2 const colorfreqtable, + unsigned int const depth, + unsigned int const newcolors, + int const methodForLargest, + int const methodForRep, + tupletable2 *const colormapP, + sixel_allocator_t *allocator) +{ +/*---------------------------------------------------------------------------- + Compute a set of only 'newcolors' colors that best represent an + image whose pixels are summarized by the histogram + 'colorfreqtable'. Each tuple in that table has depth 'depth'. + colorfreqtable.table[i] tells the number of pixels in the subject image + have a particular color. + + As a side effect, sort 'colorfreqtable'. +-----------------------------------------------------------------------------*/ + boxVector bv; + unsigned int bi; + unsigned int boxes; + int multicolorBoxesExist; + unsigned int i; + unsigned int sum; + SIXELSTATUS status = SIXEL_FALSE; + + sum = 0; + + for (i = 0; i < colorfreqtable.size; ++i) { + sum += colorfreqtable.table[i]->value; + } + + /* There is at least one box that contains at least 2 colors; ergo, + there is more splitting we can do. */ + bv = newBoxVector(colorfreqtable.size, sum, newcolors, allocator); + if (bv == NULL) { + goto end; + } + boxes = 1; + multicolorBoxesExist = (colorfreqtable.size > 1); + + /* Main loop: split boxes until we have enough. */ + while (boxes < newcolors && multicolorBoxesExist) { + /* Find the first splittable box. */ + for (bi = 0; bi < boxes && bv[bi].colors < 2; ++bi) + ; + if (bi >= boxes) { + multicolorBoxesExist = 0; + } else { + status = splitBox(bv, &boxes, bi, + colorfreqtable, depth, + methodForLargest); + if (SIXEL_FAILED(status)) { + goto end; + } + } + } + *colormapP = colormapFromBv(newcolors, bv, boxes, + colorfreqtable, depth, + methodForRep, allocator); + + sixel_allocator_free(allocator, bv); + + status = SIXEL_OK; + +end: + return status; +} + + +static unsigned int +computeHash(unsigned char const *data, unsigned int const depth) +{ + unsigned int hash = 0; + unsigned int n; + + for (n = 0; n < depth; n++) { + hash |= (unsigned int)(data[depth - 1 - n] >> 3) << n * 5; + } + + return hash; +} + + +static SIXELSTATUS +computeHistogram(unsigned char const /* in */ *data, + unsigned int /* in */ length, + unsigned long const /* in */ depth, + tupletable2 * const /* out */ colorfreqtableP, + int const /* in */ qualityMode, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + typedef unsigned short unit_t; + unsigned int i, n; + unit_t *histogram = NULL; + unit_t *refmap = NULL; + unit_t *ref; + unit_t *it; + unsigned int bucket_index; + unsigned int step; + unsigned int max_sample; + + switch (qualityMode) { + case SIXEL_QUALITY_LOW: + max_sample = 18383; + step = length / depth / max_sample * depth; + break; + case SIXEL_QUALITY_HIGH: + max_sample = 18383; + step = length / depth / max_sample * depth; + break; + case SIXEL_QUALITY_FULL: + default: + max_sample = 4003079; + step = length / depth / max_sample * depth; + break; + } + + if (length < max_sample * depth) { + step = 6 * depth; + } + + if (step <= 0) { + step = depth; + } + + quant_trace(stderr, "making histogram...\n"); + + histogram = (unit_t *)sixel_allocator_calloc(allocator, + (size_t)(1 << depth * 5), + sizeof(unit_t)); + if (histogram == NULL) { + sixel_helper_set_additional_message( + "unable to allocate memory for histogram."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + it = ref = refmap + = (unsigned short *)sixel_allocator_malloc(allocator, + (size_t)(1 << depth * 5) * sizeof(unit_t)); + if (!it) { + sixel_helper_set_additional_message( + "unable to allocate memory for lookup table."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + for (i = 0; i < length; i += step) { + bucket_index = computeHash(data + i, 3); + if (histogram[bucket_index] == 0) { + *ref++ = bucket_index; + } + if (histogram[bucket_index] < (unsigned int)(1 << sizeof(unsigned short) * 8) - 1) { + histogram[bucket_index]++; + } + } + + colorfreqtableP->size = (unsigned int)(ref - refmap); + + status = alloctupletable(&colorfreqtableP->table, depth, (unsigned int)(ref - refmap), allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + for (i = 0; i < colorfreqtableP->size; ++i) { + if (histogram[refmap[i]] > 0) { + colorfreqtableP->table[i]->value = histogram[refmap[i]]; + for (n = 0; n < depth; n++) { + colorfreqtableP->table[i]->tuple[depth - 1 - n] + = (sample)((*it >> n * 5 & 0x1f) << 3); + } + } + it++; + } + + quant_trace(stderr, "%u colors found\n", colorfreqtableP->size); + + status = SIXEL_OK; + +end: + sixel_allocator_free(allocator, refmap); + sixel_allocator_free(allocator, histogram); + + return status; +} + + +static int +computeColorMapFromInput(unsigned char const *data, + unsigned int const length, + unsigned int const depth, + unsigned int const reqColors, + int const methodForLargest, + int const methodForRep, + int const qualityMode, + tupletable2 * const colormapP, + unsigned int *origcolors, + sixel_allocator_t *allocator) +{ +/*---------------------------------------------------------------------------- + Produce a colormap containing the best colors to represent the + image stream in file 'ifP'. Figure it out using the median cut + technique. + + The colormap will have 'reqcolors' or fewer colors in it, unless + 'allcolors' is true, in which case it will have all the colors that + are in the input. + + The colormap has the same maxval as the input. + + Put the colormap in newly allocated storage as a tupletable2 + and return its address as *colormapP. Return the number of colors in + it as *colorsP and its maxval as *colormapMaxvalP. + + Return the characteristics of the input file as + *formatP and *freqPamP. (This information is not really + relevant to our colormap mission; just a fringe benefit). +-----------------------------------------------------------------------------*/ + SIXELSTATUS status = SIXEL_FALSE; + tupletable2 colorfreqtable = {0, NULL}; + unsigned int i; + unsigned int n; + + status = computeHistogram(data, length, depth, + &colorfreqtable, qualityMode, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + if (origcolors) { + *origcolors = colorfreqtable.size; + } + + if (colorfreqtable.size <= reqColors) { + quant_trace(stderr, + "Image already has few enough colors (<=%d). " + "Keeping same colors.\n", reqColors); + /* *colormapP = colorfreqtable; */ + colormapP->size = colorfreqtable.size; + status = alloctupletable(&colormapP->table, depth, colorfreqtable.size, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + for (i = 0; i < colorfreqtable.size; ++i) { + colormapP->table[i]->value = colorfreqtable.table[i]->value; + for (n = 0; n < depth; ++n) { + colormapP->table[i]->tuple[n] = colorfreqtable.table[i]->tuple[n]; + } + } + } else { + quant_trace(stderr, "choosing %d colors...\n", reqColors); + status = mediancut(colorfreqtable, depth, reqColors, + methodForLargest, methodForRep, colormapP, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + quant_trace(stderr, "%d colors are choosed.\n", colorfreqtable.size); + } + + status = SIXEL_OK; + +end: + sixel_allocator_free(allocator, colorfreqtable.table); + return status; +} + + +/* diffuse error energy to surround pixels */ +static void +error_diffuse(unsigned char /* in */ *data, /* base address of pixel buffer */ + int /* in */ pos, /* address of the destination pixel */ + int /* in */ depth, /* color depth in bytes */ + int /* in */ error, /* error energy */ + int /* in */ numerator, /* numerator of diffusion coefficient */ + int /* in */ denominator /* denominator of diffusion coefficient */) +{ + int c; + + data += pos * depth; + + c = *data + error * numerator / denominator; + if (c < 0) { + c = 0; + } + if (c >= 1 << 8) { + c = (1 << 8) - 1; + } + *data = (unsigned char)c; +} + + +static void +diffuse_none(unsigned char *data, int width, int height, + int x, int y, int depth, int error) +{ + /* unused */ (void) data; + /* unused */ (void) width; + /* unused */ (void) height; + /* unused */ (void) x; + /* unused */ (void) y; + /* unused */ (void) depth; + /* unused */ (void) error; +} + + +static void +diffuse_fs(unsigned char *data, int width, int height, + int x, int y, int depth, int error) +{ + int pos; + + pos = y * width + x; + + /* Floyd Steinberg Method + * curr 7/16 + * 3/16 5/48 1/16 + */ + if (x < width - 1 && y < height - 1) { + /* add error to the right cell */ + error_diffuse(data, pos + width * 0 + 1, depth, error, 7, 16); + /* add error to the left-bottom cell */ + error_diffuse(data, pos + width * 1 - 1, depth, error, 3, 16); + /* add error to the bottom cell */ + error_diffuse(data, pos + width * 1 + 0, depth, error, 5, 16); + /* add error to the right-bottom cell */ + error_diffuse(data, pos + width * 1 + 1, depth, error, 1, 16); + } +} + + +static void +diffuse_atkinson(unsigned char *data, int width, int height, + int x, int y, int depth, int error) +{ + int pos; + + pos = y * width + x; + + /* Atkinson's Method + * curr 1/8 1/8 + * 1/8 1/8 1/8 + * 1/8 + */ + if (y < height - 2) { + /* add error to the right cell */ + error_diffuse(data, pos + width * 0 + 1, depth, error, 1, 8); + /* add error to the 2th right cell */ + error_diffuse(data, pos + width * 0 + 2, depth, error, 1, 8); + /* add error to the left-bottom cell */ + error_diffuse(data, pos + width * 1 - 1, depth, error, 1, 8); + /* add error to the bottom cell */ + error_diffuse(data, pos + width * 1 + 0, depth, error, 1, 8); + /* add error to the right-bottom cell */ + error_diffuse(data, pos + width * 1 + 1, depth, error, 1, 8); + /* add error to the 2th bottom cell */ + error_diffuse(data, pos + width * 2 + 0, depth, error, 1, 8); + } +} + + +static void +diffuse_jajuni(unsigned char *data, int width, int height, + int x, int y, int depth, int error) +{ + int pos; + + pos = y * width + x; + + /* Jarvis, Judice & Ninke Method + * curr 7/48 5/48 + * 3/48 5/48 7/48 5/48 3/48 + * 1/48 3/48 5/48 3/48 1/48 + */ + if (pos < (height - 2) * width - 2) { + error_diffuse(data, pos + width * 0 + 1, depth, error, 7, 48); + error_diffuse(data, pos + width * 0 + 2, depth, error, 5, 48); + error_diffuse(data, pos + width * 1 - 2, depth, error, 3, 48); + error_diffuse(data, pos + width * 1 - 1, depth, error, 5, 48); + error_diffuse(data, pos + width * 1 + 0, depth, error, 7, 48); + error_diffuse(data, pos + width * 1 + 1, depth, error, 5, 48); + error_diffuse(data, pos + width * 1 + 2, depth, error, 3, 48); + error_diffuse(data, pos + width * 2 - 2, depth, error, 1, 48); + error_diffuse(data, pos + width * 2 - 1, depth, error, 3, 48); + error_diffuse(data, pos + width * 2 + 0, depth, error, 5, 48); + error_diffuse(data, pos + width * 2 + 1, depth, error, 3, 48); + error_diffuse(data, pos + width * 2 + 2, depth, error, 1, 48); + } +} + + +static void +diffuse_stucki(unsigned char *data, int width, int height, + int x, int y, int depth, int error) +{ + int pos; + + pos = y * width + x; + + /* Stucki's Method + * curr 8/48 4/48 + * 2/48 4/48 8/48 4/48 2/48 + * 1/48 2/48 4/48 2/48 1/48 + */ + if (pos < (height - 2) * width - 2) { + error_diffuse(data, pos + width * 0 + 1, depth, error, 1, 6); + error_diffuse(data, pos + width * 0 + 2, depth, error, 1, 12); + error_diffuse(data, pos + width * 1 - 2, depth, error, 1, 24); + error_diffuse(data, pos + width * 1 - 1, depth, error, 1, 12); + error_diffuse(data, pos + width * 1 + 0, depth, error, 1, 6); + error_diffuse(data, pos + width * 1 + 1, depth, error, 1, 12); + error_diffuse(data, pos + width * 1 + 2, depth, error, 1, 24); + error_diffuse(data, pos + width * 2 - 2, depth, error, 1, 48); + error_diffuse(data, pos + width * 2 - 1, depth, error, 1, 24); + error_diffuse(data, pos + width * 2 + 0, depth, error, 1, 12); + error_diffuse(data, pos + width * 2 + 1, depth, error, 1, 24); + error_diffuse(data, pos + width * 2 + 2, depth, error, 1, 48); + } +} + + +static void +diffuse_burkes(unsigned char *data, int width, int height, + int x, int y, int depth, int error) +{ + int pos; + + pos = y * width + x; + + /* Burkes' Method + * curr 4/16 2/16 + * 1/16 2/16 4/16 2/16 1/16 + */ + if (pos < (height - 1) * width - 2) { + error_diffuse(data, pos + width * 0 + 1, depth, error, 1, 4); + error_diffuse(data, pos + width * 0 + 2, depth, error, 1, 8); + error_diffuse(data, pos + width * 1 - 2, depth, error, 1, 16); + error_diffuse(data, pos + width * 1 - 1, depth, error, 1, 8); + error_diffuse(data, pos + width * 1 + 0, depth, error, 1, 4); + error_diffuse(data, pos + width * 1 + 1, depth, error, 1, 8); + error_diffuse(data, pos + width * 1 + 2, depth, error, 1, 16); + } +} + +static float +mask_a (int x, int y, int c) +{ + return ((((x + c * 67) + y * 236) * 119) & 255 ) / 128.0 - 1.0; +} + +static float +mask_x (int x, int y, int c) +{ + return ((((x + c * 29) ^ y* 149) * 1234) & 511 ) / 256.0 - 1.0; +} + +/* lookup closest color from palette with "normal" strategy */ +static int +lookup_normal(unsigned char const * const pixel, + int const depth, + unsigned char const * const palette, + int const reqcolor, + unsigned short * const cachetable, + int const complexion) +{ + int result; + int diff; + int r; + int i; + int n; + int distant; + + result = (-1); + diff = INT_MAX; + + /* don't use cachetable in 'normal' strategy */ + (void) cachetable; + + for (i = 0; i < reqcolor; i++) { + distant = 0; + r = pixel[0] - palette[i * depth + 0]; + distant += r * r * complexion; + for (n = 1; n < depth; ++n) { + r = pixel[n] - palette[i * depth + n]; + distant += r * r; + } + if (distant < diff) { + diff = distant; + result = i; + } + } + + return result; +} + + +/* lookup closest color from palette with "fast" strategy */ +static int +lookup_fast(unsigned char const * const pixel, + int const depth, + unsigned char const * const palette, + int const reqcolor, + unsigned short * const cachetable, + int const complexion) +{ + int result; + unsigned int hash; + int diff; + int cache; + int i; + int distant; + + /* don't use depth in 'fast' strategy because it's always 3 */ + (void) depth; + + result = (-1); + diff = INT_MAX; + hash = computeHash(pixel, 3); + + cache = cachetable[hash]; + if (cache) { /* fast lookup */ + return cache - 1; + } + /* collision */ + for (i = 0; i < reqcolor; i++) { + distant = 0; +#if 0 + for (n = 0; n < 3; ++n) { + r = pixel[n] - palette[i * 3 + n]; + distant += r * r; + } +#elif 1 /* complexion correction */ + distant = (pixel[0] - palette[i * 3 + 0]) * (pixel[0] - palette[i * 3 + 0]) * complexion + + (pixel[1] - palette[i * 3 + 1]) * (pixel[1] - palette[i * 3 + 1]) + + (pixel[2] - palette[i * 3 + 2]) * (pixel[2] - palette[i * 3 + 2]) + ; +#endif + if (distant < diff) { + diff = distant; + result = i; + } + } + cachetable[hash] = result + 1; + + return result; +} + + +static int +lookup_mono_darkbg(unsigned char const * const pixel, + int const depth, + unsigned char const * const palette, + int const reqcolor, + unsigned short * const cachetable, + int const complexion) +{ + int n; + int distant; + + /* unused */ (void) palette; + /* unused */ (void) cachetable; + /* unused */ (void) complexion; + + distant = 0; + for (n = 0; n < depth; ++n) { + distant += pixel[n]; + } + return distant >= 128 * reqcolor ? 1: 0; +} + + +static int +lookup_mono_lightbg(unsigned char const * const pixel, + int const depth, + unsigned char const * const palette, + int const reqcolor, + unsigned short * const cachetable, + int const complexion) +{ + int n; + int distant; + + /* unused */ (void) palette; + /* unused */ (void) cachetable; + /* unused */ (void) complexion; + + distant = 0; + for (n = 0; n < depth; ++n) { + distant += pixel[n]; + } + return distant < 128 * reqcolor ? 1: 0; +} + + +/* choose colors using median-cut method */ +SIXELSTATUS +sixel_quant_make_palette( + unsigned char /* out */ **result, + unsigned char const /* in */ *data, + unsigned int /* in */ length, + int /* in */ pixelformat, + unsigned int /* in */ reqcolors, + unsigned int /* in */ *ncolors, + unsigned int /* in */ *origcolors, + int /* in */ methodForLargest, + int /* in */ methodForRep, + int /* in */ qualityMode, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + unsigned int i; + unsigned int n; + int ret; + tupletable2 colormap; + unsigned int depth; + int result_depth; + + result_depth = sixel_helper_compute_depth(pixelformat); + if (result_depth <= 0) { + *result = NULL; + goto end; + } + + depth = (unsigned int)result_depth; + + ret = computeColorMapFromInput(data, length, depth, + reqcolors, methodForLargest, + methodForRep, qualityMode, + &colormap, origcolors, allocator); + if (ret != 0) { + *result = NULL; + goto end; + } + *ncolors = colormap.size; + quant_trace(stderr, "tupletable size: %d\n", *ncolors); + *result = (unsigned char *)sixel_allocator_malloc(allocator, *ncolors * depth); + for (i = 0; i < *ncolors; i++) { + for (n = 0; n < depth; ++n) { + (*result)[i * depth + n] = colormap.table[i]->tuple[n]; + } + } + + sixel_allocator_free(allocator, colormap.table); + + status = SIXEL_OK; + +end: + return status; +} + + +/* apply color palette into specified pixel buffers */ +SIXELSTATUS +sixel_quant_apply_palette( + sixel_index_t /* out */ *result, + unsigned char /* in */ *data, + int /* in */ width, + int /* in */ height, + int /* in */ depth, + unsigned char /* in */ *palette, + int /* in */ reqcolor, + int /* in */ methodForDiffuse, + int /* in */ foptimize, + int /* in */ foptimize_palette, + int /* in */ complexion, + unsigned short /* in */ *cachetable, + int /* in */ *ncolors, + sixel_allocator_t /* in */ *allocator) +{ + typedef int component_t; + enum { max_depth = 4 }; + SIXELSTATUS status = SIXEL_FALSE; + int pos, n, x, y, sum1, sum2; + component_t offset; + int color_index; + unsigned short *indextable; + unsigned char new_palette[SIXEL_PALETTE_MAX * 4]; + unsigned short migration_map[SIXEL_PALETTE_MAX]; + float (*f_mask) (int x, int y, int c) = NULL; + void (*f_diffuse)(unsigned char *data, int width, int height, + int x, int y, int depth, int offset); + int (*f_lookup)(unsigned char const * const pixel, + int const depth, + unsigned char const * const palette, + int const reqcolor, + unsigned short * const cachetable, + int const complexion); + + /* check bad reqcolor */ + if (reqcolor < 1) { + status = SIXEL_BAD_ARGUMENT; + sixel_helper_set_additional_message( + "sixel_quant_apply_palette: " + "a bad argument is detected, reqcolor < 0."); + goto end; + } + + if (depth != 3) { + f_diffuse = diffuse_none; + } else { + switch (methodForDiffuse) { + case SIXEL_DIFFUSE_NONE: + f_diffuse = diffuse_none; + break; + case SIXEL_DIFFUSE_ATKINSON: + f_diffuse = diffuse_atkinson; + break; + case SIXEL_DIFFUSE_FS: + f_diffuse = diffuse_fs; + break; + case SIXEL_DIFFUSE_JAJUNI: + f_diffuse = diffuse_jajuni; + break; + case SIXEL_DIFFUSE_STUCKI: + f_diffuse = diffuse_stucki; + break; + case SIXEL_DIFFUSE_BURKES: + f_diffuse = diffuse_burkes; + break; + case SIXEL_DIFFUSE_A_DITHER: + f_diffuse = diffuse_none; + f_mask = mask_a; + break; + case SIXEL_DIFFUSE_X_DITHER: + f_diffuse = diffuse_none; + f_mask = mask_x; + break; + default: + quant_trace(stderr, "Internal error: invalid value of" + " methodForDiffuse: %d\n", + methodForDiffuse); + f_diffuse = diffuse_none; + break; + } + } + + f_lookup = NULL; + if (reqcolor == 2) { + sum1 = 0; + sum2 = 0; + for (n = 0; n < depth; ++n) { + sum1 += palette[n]; + } + for (n = depth; n < depth + depth; ++n) { + sum2 += palette[n]; + } + if (sum1 == 0 && sum2 == 255 * 3) { + f_lookup = lookup_mono_darkbg; + } else if (sum1 == 255 * 3 && sum2 == 0) { + f_lookup = lookup_mono_lightbg; + } + } + if (f_lookup == NULL) { + if (foptimize && depth == 3) { + f_lookup = lookup_fast; + } else { + f_lookup = lookup_normal; + } + } + + indextable = cachetable; + if (cachetable == NULL && f_lookup == lookup_fast) { + indextable = (unsigned short *)sixel_allocator_calloc(allocator, + (size_t)(1 << depth * 5), + sizeof(unsigned short)); + if (!indextable) { + quant_trace(stderr, "Unable to allocate memory for indextable.\n"); + goto end; + } + } + + if (foptimize_palette) { + *ncolors = 0; + + memset(new_palette, 0x00, sizeof(SIXEL_PALETTE_MAX * depth)); + memset(migration_map, 0x00, sizeof(migration_map)); + + if (f_mask) { + for (y = 0; y < height; ++y) { + for (x = 0; x < width; ++x) { + unsigned char copy[max_depth]; + int d; + int val; + + pos = y * width + x; + for (d = 0; d < depth; d ++) { + val = data[pos * depth + d] + f_mask(x, y, d) * 32; + copy[d] = val < 0 ? 0 : val > 255 ? 255 : val; + } + color_index = f_lookup(copy, depth, + palette, reqcolor, indextable, complexion); + if (migration_map[color_index] == 0) { + result[pos] = *ncolors; + for (n = 0; n < depth; ++n) { + new_palette[*ncolors * depth + n] = palette[color_index * depth + n]; + } + ++*ncolors; + migration_map[color_index] = *ncolors; + } else { + result[pos] = migration_map[color_index] - 1; + } + } + } + memcpy(palette, new_palette, (size_t)(*ncolors * depth)); + } else { + for (y = 0; y < height; ++y) { + for (x = 0; x < width; ++x) { + pos = y * width + x; + color_index = f_lookup(data + (pos * depth), depth, + palette, reqcolor, indextable, complexion); + if (migration_map[color_index] == 0) { + result[pos] = *ncolors; + for (n = 0; n < depth; ++n) { + new_palette[*ncolors * depth + n] = palette[color_index * depth + n]; + } + ++*ncolors; + migration_map[color_index] = *ncolors; + } else { + result[pos] = migration_map[color_index] - 1; + } + for (n = 0; n < depth; ++n) { + offset = data[pos * depth + n] - palette[color_index * depth + n]; + f_diffuse(data + n, width, height, x, y, depth, offset); + } + } + } + memcpy(palette, new_palette, (size_t)(*ncolors * depth)); + } + } else { + if (f_mask) { + for (y = 0; y < height; ++y) { + for (x = 0; x < width; ++x) { + unsigned char copy[max_depth]; + int d; + int val; + + pos = y * width + x; + for (d = 0; d < depth; d ++) { + val = data[pos * depth + d] + f_mask(x, y, d) * 32; + copy[d] = val < 0 ? 0 : val > 255 ? 255 : val; + } + result[pos] = f_lookup(copy, depth, + palette, reqcolor, indextable, complexion); + } + } + } else { + for (y = 0; y < height; ++y) { + for (x = 0; x < width; ++x) { + pos = y * width + x; + color_index = f_lookup(data + (pos * depth), depth, + palette, reqcolor, indextable, complexion); + result[pos] = color_index; + for (n = 0; n < depth; ++n) { + offset = data[pos * depth + n] - palette[color_index * depth + n]; + f_diffuse(data + n, width, height, x, y, depth, offset); + } + } + } + } + *ncolors = reqcolor; + } + + if (cachetable == NULL) { + sixel_allocator_free(allocator, indextable); + } + + status = SIXEL_OK; + +end: + return status; +} + + +void +sixel_quant_free_palette( + unsigned char /* in */ *data, + sixel_allocator_t /* in */ *allocator) +{ + sixel_allocator_free(allocator, data); +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + sample minval[1] = { 1 }; + sample maxval[1] = { 2 }; + unsigned int retval; + + retval = largestByLuminosity(minval, maxval, 1); + if (retval != 0) { + goto error; + } + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +SIXELAPI int +sixel_quant_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/quant.h b/ThirdParty/libsixel/src/quant.h new file mode 100644 index 0000000000..5ecf28b47e --- /dev/null +++ b/ThirdParty/libsixel/src/quant.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_QUANT_H +#define LIBSIXEL_QUANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* choose colors using median-cut method */ +SIXELSTATUS +sixel_quant_make_palette( + unsigned char /* out */ **result, + unsigned const char /* in */ *data, /* data for sampling */ + unsigned int /* in */ length, /* data size */ + int /* in */ pixelformat, + unsigned int /* in */ reqcolors, + unsigned int /* in */ *ncolors, + unsigned int /* in */ *origcolors, + int /* in */ methodForLargest, + int /* in */ methodForRep, + int /* in */ qualityMode, + sixel_allocator_t /* in */ *allocator); + + +/* apply color palette into specified pixel buffers */ +SIXELSTATUS +sixel_quant_apply_palette( + sixel_index_t /* out */ *result, + unsigned char /* in */ *data, + int /* in */ width, + int /* in */ height, + int /* in */ pixelformat, + unsigned char /* in */ *palette, + int /* in */ reqcolor, + int const /* in */ methodForDiffuse, + int /* in */ foptimize, + int /* in */ foptimize_palette, + int /* in */ complexion, + unsigned short /* in */ *cachetable, + int /* in */ *ncolor, + sixel_allocator_t /* in */ *allocator); + + +/* deallocate specified palette */ +void +sixel_quant_free_palette( + unsigned char /* in */ *data, + sixel_allocator_t /* in */ *allocator); + +#if HAVE_TESTS +int +sixel_quant_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_QUANT_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/rgblookup.gperf b/ThirdParty/libsixel/src/rgblookup.gperf new file mode 100644 index 0000000000..e056e2c900 --- /dev/null +++ b/ThirdParty/libsixel/src/rgblookup.gperf @@ -0,0 +1,760 @@ +%struct-type +struct color { + char *name; + unsigned char r; + unsigned char g; + unsigned char b; +}; +%% +snow, 0xff, 0xfa, 0xfa +ghost white, 0xf8, 0xf8, 0xff +ghostwhite, 0xf8, 0xf8, 0xff +white smoke, 0xf5, 0xf5, 0xf5 +whitesmoke, 0xf5, 0xf5, 0xf5 +gainsboro, 0xdc, 0xdc, 0xdc +floral white, 0xff, 0xfa, 0xf0 +floralwhite, 0xff, 0xfa, 0xf0 +old lace, 0xfd, 0xf5, 0xe6 +oldlace, 0xfd, 0xf5, 0xe6 +linen, 0xfa, 0xf0, 0xe6 +antique white, 0xfa, 0xeb, 0xd7 +antiquewhite, 0xfa, 0xeb, 0xd7 +papaya whip, 0xff, 0xef, 0xd5 +papayawhip, 0xff, 0xef, 0xd5 +blanched almond, 0xff, 0xeb, 0xcd +blanchedalmond, 0xff, 0xeb, 0xcd +bisque, 0xff, 0xe4, 0xc4 +peach puff, 0xff, 0xda, 0xb9 +peachpuff, 0xff, 0xda, 0xb9 +navajo white, 0xff, 0xde, 0xad +navajowhite, 0xff, 0xde, 0xad +moccasin, 0xff, 0xe4, 0xb5 +cornsilk, 0xff, 0xf8, 0xdc +ivory, 0xff, 0xff, 0xf0 +lemon chiffon, 0xff, 0xfa, 0xcd +lemonchiffon, 0xff, 0xfa, 0xcd +seashell, 0xff, 0xf5, 0xee +honeydew, 0xf0, 0xff, 0xf0 +mint cream, 0xf5, 0xff, 0xfa +mintcream, 0xf5, 0xff, 0xfa +azure, 0xf0, 0xff, 0xff +alice blue, 0xf0, 0xf8, 0xff +aliceblue, 0xf0, 0xf8, 0xff +lavender, 0xe6, 0xe6, 0xfa +lavender blush, 0xff, 0xf0, 0xf5 +lavenderblush, 0xff, 0xf0, 0xf5 +misty rose, 0xff, 0xe4, 0xe1 +mistyrose, 0xff, 0xe4, 0xe1 +white, 0xff, 0xff, 0xff +black, 0x00, 0x00, 0x00 +dark slate gray, 0x2f, 0x4f, 0x4f +darkslategray, 0x2f, 0x4f, 0x4f +dark slate grey, 0x2f, 0x4f, 0x4f +darkslategrey, 0x2f, 0x4f, 0x4f +dim gray, 0x69, 0x69, 0x69 +dimgray, 0x69, 0x69, 0x69 +dim grey, 0x69, 0x69, 0x69 +dimgrey, 0x69, 0x69, 0x69 +slate gray, 0x70, 0x80, 0x90 +slategray, 0x70, 0x80, 0x90 +slate grey, 0x70, 0x80, 0x90 +slategrey, 0x70, 0x80, 0x90 +light slate gray, 0x77, 0x88, 0x99 +lightslategray, 0x77, 0x88, 0x99 +light slate grey, 0x77, 0x88, 0x99 +lightslategrey, 0x77, 0x88, 0x99 +gray, 0xbe, 0xbe, 0xbe +grey, 0xbe, 0xbe, 0xbe +light grey, 0xd3, 0xd3, 0xd3 +lightgrey, 0xd3, 0xd3, 0xd3 +light gray, 0xd3, 0xd3, 0xd3 +lightgray, 0xd3, 0xd3, 0xd3 +midnight blue, 0x19, 0x19, 0x70 +midnightblue, 0x19, 0x19, 0x70 +navy, 0x00, 0x00, 0x80 +navy blue, 0x00, 0x00, 0x80 +navyblue, 0x00, 0x00, 0x80 +cornflower blue, 0x64, 0x95, 0xed +cornflowerblue, 0x64, 0x95, 0xed +dark slate blue, 0x48, 0x3d, 0x8b +darkslateblue, 0x48, 0x3d, 0x8b +slate blue, 0x6a, 0x5a, 0xcd +slateblue, 0x6a, 0x5a, 0xcd +medium slate blue, 0x7b, 0x68, 0xee +mediumslateblue, 0x7b, 0x68, 0xee +light slate blue, 0x84, 0x70, 0xff +lightslateblue, 0x84, 0x70, 0xff +medium blue, 0x00, 0x00, 0xcd +mediumblue, 0x00, 0x00, 0xcd +royal blue, 0x41, 0x69, 0xe1 +royalblue, 0x41, 0x69, 0xe1 +blue, 0x00, 0x00, 0xff +dodger blue, 0x1e, 0x90, 0xff +dodgerblue, 0x1e, 0x90, 0xff +deep sky blue, 0x00, 0xbf, 0xff +deepskyblue, 0x00, 0xbf, 0xff +sky blue, 0x87, 0xce, 0xeb +skyblue, 0x87, 0xce, 0xeb +light sky blue, 0x87, 0xce, 0xfa +lightskyblue, 0x87, 0xce, 0xfa +steel blue, 0x46, 0x82, 0xb4 +steelblue, 0x46, 0x82, 0xb4 +light steel blue, 0xb0, 0xc4, 0xde +lightsteelblue, 0xb0, 0xc4, 0xde +light blue, 0xad, 0xd8, 0xe6 +lightblue, 0xad, 0xd8, 0xe6 +powder blue, 0xb0, 0xe0, 0xe6 +powderblue, 0xb0, 0xe0, 0xe6 +pale turquoise, 0xaf, 0xee, 0xee +paleturquoise, 0xaf, 0xee, 0xee +dark turquoise, 0x00, 0xce, 0xd1 +darkturquoise, 0x00, 0xce, 0xd1 +medium turquoise, 0x48, 0xd1, 0xcc +mediumturquoise, 0x48, 0xd1, 0xcc +turquoise, 0x40, 0xe0, 0xd0 +cyan, 0x00, 0xff, 0xff +light cyan, 0xe0, 0xff, 0xff +lightcyan, 0xe0, 0xff, 0xff +cadet blue, 0x5f, 0x9e, 0xa0 +cadetblue, 0x5f, 0x9e, 0xa0 +medium aquamarine, 0x66, 0xcd, 0xaa +mediumaquamarine, 0x66, 0xcd, 0xaa +aquamarine, 0x7f, 0xff, 0xd4 +dark green, 0x00, 0x64, 0x00 +darkgreen, 0x00, 0x64, 0x00 +dark olive green, 0x55, 0x6b, 0x2f +darkolivegreen, 0x55, 0x6b, 0x2f +dark sea green, 0x8f, 0xbc, 0x8f +darkseagreen, 0x8f, 0xbc, 0x8f +sea green, 0x2e, 0x8b, 0x57 +seagreen, 0x2e, 0x8b, 0x57 +medium sea green, 0x3c, 0xb3, 0x71 +mediumseagreen, 0x3c, 0xb3, 0x71 +light sea green, 0x20, 0xb2, 0xaa +lightseagreen, 0x20, 0xb2, 0xaa +pale green, 0x98, 0xfb, 0x98 +palegreen, 0x98, 0xfb, 0x98 +spring green, 0x00, 0xff, 0x7f +springgreen, 0x00, 0xff, 0x7f +lawn green, 0x7c, 0xfc, 0x00 +lawngreen, 0x7c, 0xfc, 0x00 +green, 0x00, 0xff, 0x00 +chartreuse, 0x7f, 0xff, 0x00 +medium spring green, 0x00, 0xfa, 0x9a +mediumspringgreen, 0x00, 0xfa, 0x9a +green yellow, 0xad, 0xff, 0x2f +greenyellow, 0xad, 0xff, 0x2f +lime green, 0x32, 0xcd, 0x32 +limegreen, 0x32, 0xcd, 0x32 +yellow green, 0x9a, 0xcd, 0x32 +yellowgreen, 0x9a, 0xcd, 0x32 +forest green, 0x22, 0x8b, 0x22 +forestgreen, 0x22, 0x8b, 0x22 +olive drab, 0x6b, 0x8e, 0x23 +olivedrab, 0x6b, 0x8e, 0x23 +dark khaki, 0xbd, 0xb7, 0x6b +darkkhaki, 0xbd, 0xb7, 0x6b +khaki, 0xf0, 0xe6, 0x8c +pale goldenrod, 0xee, 0xe8, 0xaa +palegoldenrod, 0xee, 0xe8, 0xaa +light goldenrod yellow, 0xfa, 0xfa, 0xd2 +lightgoldenrodyellow, 0xfa, 0xfa, 0xd2 +light yellow, 0xff, 0xff, 0xe0 +lightyellow, 0xff, 0xff, 0xe0 +yellow, 0xff, 0xff, 0x00 +gold, 0xff, 0xd7, 0x00 +light goldenrod, 0xee, 0xdd, 0x82 +lightgoldenrod, 0xee, 0xdd, 0x82 +goldenrod, 0xda, 0xa5, 0x20 +dark goldenrod, 0xb8, 0x86, 0x0b +darkgoldenrod, 0xb8, 0x86, 0x0b +rosy brown, 0xbc, 0x8f, 0x8f +rosybrown, 0xbc, 0x8f, 0x8f +indian red, 0xcd, 0x5c, 0x5c +indianred, 0xcd, 0x5c, 0x5c +saddle brown, 0x8b, 0x45, 0x13 +saddlebrown, 0x8b, 0x45, 0x13 +sienna, 0xa0, 0x52, 0x2d +peru, 0xcd, 0x85, 0x3f +burlywood, 0xde, 0xb8, 0x87 +beige, 0xf5, 0xf5, 0xdc +wheat, 0xf5, 0xde, 0xb3 +sandy brown, 0xf4, 0xa4, 0x60 +sandybrown, 0xf4, 0xa4, 0x60 +tan, 0xd2, 0xb4, 0x8c +chocolate, 0xd2, 0x69, 0x1e +firebrick, 0xb2, 0x22, 0x22 +brown, 0xa5, 0x2a, 0x2a +dark salmon, 0xe9, 0x96, 0x7a +darksalmon, 0xe9, 0x96, 0x7a +salmon, 0xfa, 0x80, 0x72 +light salmon, 0xff, 0xa0, 0x7a +lightsalmon, 0xff, 0xa0, 0x7a +orange, 0xff, 0xa5, 0x00 +dark orange, 0xff, 0x8c, 0x00 +darkorange, 0xff, 0x8c, 0x00 +coral, 0xff, 0x7f, 0x50 +light coral, 0xf0, 0x80, 0x80 +lightcoral, 0xf0, 0x80, 0x80 +tomato, 0xff, 0x63, 0x47 +orange red, 0xff, 0x45, 0x00 +orangered, 0xff, 0x45, 0x00 +red, 0xff, 0x00, 0x00 +hot pink, 0xff, 0x69, 0xb4 +hotpink, 0xff, 0x69, 0xb4 +deep pink, 0xff, 0x14, 0x93 +deeppink, 0xff, 0x14, 0x93 +pink, 0xff, 0xc0, 0xcb +light pink, 0xff, 0xb6, 0xc1 +lightpink, 0xff, 0xb6, 0xc1 +pale violet red, 0xdb, 0x70, 0x93 +palevioletred, 0xdb, 0x70, 0x93 +maroon, 0xb0, 0x30, 0x60 +medium violet red, 0xc7, 0x15, 0x85 +mediumvioletred, 0xc7, 0x15, 0x85 +violet red, 0xd0, 0x20, 0x90 +violetred, 0xd0, 0x20, 0x90 +magenta, 0xff, 0x00, 0xff +violet, 0xee, 0x82, 0xee +plum, 0xdd, 0xa0, 0xdd +orchid, 0xda, 0x70, 0xd6 +medium orchid, 0xba, 0x55, 0xd3 +mediumorchid, 0xba, 0x55, 0xd3 +dark orchid, 0x99, 0x32, 0xcc +darkorchid, 0x99, 0x32, 0xcc +dark violet, 0x94, 0x00, 0xd3 +darkviolet, 0x94, 0x00, 0xd3 +blue violet, 0x8a, 0x2b, 0xe2 +blueviolet, 0x8a, 0x2b, 0xe2 +purple, 0xa0, 0x20, 0xf0 +medium purple, 0x93, 0x70, 0xdb +mediumpurple, 0x93, 0x70, 0xdb +thistle, 0xd8, 0xbf, 0xd8 +snow1, 0xff, 0xfa, 0xfa +snow2, 0xee, 0xe9, 0xe9 +snow3, 0xcd, 0xc9, 0xc9 +snow4, 0x8b, 0x89, 0x89 +seashell1, 0xff, 0xf5, 0xee +seashell2, 0xee, 0xe5, 0xde +seashell3, 0xcd, 0xc5, 0xbf +seashell4, 0x8b, 0x86, 0x82 +antiquewhite1, 0xff, 0xef, 0xdb +antiquewhite2, 0xee, 0xdf, 0xcc +antiquewhite3, 0xcd, 0xc0, 0xb0 +antiquewhite4, 0x8b, 0x83, 0x78 +bisque1, 0xff, 0xe4, 0xc4 +bisque2, 0xee, 0xd5, 0xb7 +bisque3, 0xcd, 0xb7, 0x9e +bisque4, 0x8b, 0x7d, 0x6b +peachpuff1, 0xff, 0xda, 0xb9 +peachpuff2, 0xee, 0xcb, 0xad +peachpuff3, 0xcd, 0xaf, 0x95 +peachpuff4, 0x8b, 0x77, 0x65 +navajowhite1, 0xff, 0xde, 0xad +navajowhite2, 0xee, 0xcf, 0xa1 +navajowhite3, 0xcd, 0xb3, 0x8b +navajowhite4, 0x8b, 0x79, 0x5e +lemonchiffon1, 0xff, 0xfa, 0xcd +lemonchiffon2, 0xee, 0xe9, 0xbf +lemonchiffon3, 0xcd, 0xc9, 0xa5 +lemonchiffon4, 0x8b, 0x89, 0x70 +cornsilk1, 0xff, 0xf8, 0xdc +cornsilk2, 0xee, 0xe8, 0xcd +cornsilk3, 0xcd, 0xc8, 0xb1 +cornsilk4, 0x8b, 0x88, 0x78 +ivory1, 0xff, 0xff, 0xf0 +ivory2, 0xee, 0xee, 0xe0 +ivory3, 0xcd, 0xcd, 0xc1 +ivory4, 0x8b, 0x8b, 0x83 +honeydew1, 0xf0, 0xff, 0xf0 +honeydew2, 0xe0, 0xee, 0xe0 +honeydew3, 0xc1, 0xcd, 0xc1 +honeydew4, 0x83, 0x8b, 0x83 +lavenderblush1, 0xff, 0xf0, 0xf5 +lavenderblush2, 0xee, 0xe0, 0xe5 +lavenderblush3, 0xcd, 0xc1, 0xc5 +lavenderblush4, 0x8b, 0x83, 0x86 +mistyrose1, 0xff, 0xe4, 0xe1 +mistyrose2, 0xee, 0xd5, 0xd2 +mistyrose3, 0xcd, 0xb7, 0xb5 +mistyrose4, 0x8b, 0x7d, 0x7b +azure1, 0xf0, 0xff, 0xff +azure2, 0xe0, 0xee, 0xee +azure3, 0xc1, 0xcd, 0xcd +azure4, 0x83, 0x8b, 0x8b +slateblue1, 0x83, 0x6f, 0xff +slateblue2, 0x7a, 0x67, 0xee +slateblue3, 0x69, 0x59, 0xcd +slateblue4, 0x47, 0x3c, 0x8b +royalblue1, 0x48, 0x76, 0xff +royalblue2, 0x43, 0x6e, 0xee +royalblue3, 0x3a, 0x5f, 0xcd +royalblue4, 0x27, 0x40, 0x8b +blue1, 0x00, 0x00, 0xff +blue2, 0x00, 0x00, 0xee +blue3, 0x00, 0x00, 0xcd +blue4, 0x00, 0x00, 0x8b +dodgerblue1, 0x1e, 0x90, 0xff +dodgerblue2, 0x1c, 0x86, 0xee +dodgerblue3, 0x18, 0x74, 0xcd +dodgerblue4, 0x10, 0x4e, 0x8b +steelblue1, 0x63, 0xb8, 0xff +steelblue2, 0x5c, 0xac, 0xee +steelblue3, 0x4f, 0x94, 0xcd +steelblue4, 0x36, 0x64, 0x8b +deepskyblue1, 0x00, 0xbf, 0xff +deepskyblue2, 0x00, 0xb2, 0xee +deepskyblue3, 0x00, 0x9a, 0xcd +deepskyblue4, 0x00, 0x68, 0x8b +skyblue1, 0x87, 0xce, 0xff +skyblue2, 0x7e, 0xc0, 0xee +skyblue3, 0x6c, 0xa6, 0xcd +skyblue4, 0x4a, 0x70, 0x8b +lightskyblue1, 0xb0, 0xe2, 0xff +lightskyblue2, 0xa4, 0xd3, 0xee +lightskyblue3, 0x8d, 0xb6, 0xcd +lightskyblue4, 0x60, 0x7b, 0x8b +slategray1, 0xc6, 0xe2, 0xff +slategray2, 0xb9, 0xd3, 0xee +slategray3, 0x9f, 0xb6, 0xcd +slategray4, 0x6c, 0x7b, 0x8b +lightsteelblue1, 0xca, 0xe1, 0xff +lightsteelblue2, 0xbc, 0xd2, 0xee +lightsteelblue3, 0xa2, 0xb5, 0xcd +lightsteelblue4, 0x6e, 0x7b, 0x8b +lightblue1, 0xbf, 0xef, 0xff +lightblue2, 0xb2, 0xdf, 0xee +lightblue3, 0x9a, 0xc0, 0xcd +lightblue4, 0x68, 0x83, 0x8b +lightcyan1, 0xe0, 0xff, 0xff +lightcyan2, 0xd1, 0xee, 0xee +lightcyan3, 0xb4, 0xcd, 0xcd +lightcyan4, 0x7a, 0x8b, 0x8b +paleturquoise1, 0xbb, 0xff, 0xff +paleturquoise2, 0xae, 0xee, 0xee +paleturquoise3, 0x96, 0xcd, 0xcd +paleturquoise4, 0x66, 0x8b, 0x8b +cadetblue1, 0x98, 0xf5, 0xff +cadetblue2, 0x8e, 0xe5, 0xee +cadetblue3, 0x7a, 0xc5, 0xcd +cadetblue4, 0x53, 0x86, 0x8b +turquoise1, 0x00, 0xf5, 0xff +turquoise2, 0x00, 0xe5, 0xee +turquoise3, 0x00, 0xc5, 0xcd +turquoise4, 0x00, 0x86, 0x8b +cyan1, 0x00, 0xff, 0xff +cyan2, 0x00, 0xee, 0xee +cyan3, 0x00, 0xcd, 0xcd +cyan4, 0x00, 0x8b, 0x8b +darkslategray1, 0x97, 0xff, 0xff +darkslategray2, 0x8d, 0xee, 0xee +darkslategray3, 0x79, 0xcd, 0xcd +darkslategray4, 0x52, 0x8b, 0x8b +aquamarine1, 0x7f, 0xff, 0xd4 +aquamarine2, 0x76, 0xee, 0xc6 +aquamarine3, 0x66, 0xcd, 0xaa +aquamarine4, 0x45, 0x8b, 0x74 +darkseagreen1, 0xc1, 0xff, 0xc1 +darkseagreen2, 0xb4, 0xee, 0xb4 +darkseagreen3, 0x9b, 0xcd, 0x9b +darkseagreen4, 0x69, 0x8b, 0x69 +seagreen1, 0x54, 0xff, 0x9f +seagreen2, 0x4e, 0xee, 0x94 +seagreen3, 0x43, 0xcd, 0x80 +seagreen4, 0x2e, 0x8b, 0x57 +palegreen1, 0x9a, 0xff, 0x9a +palegreen2, 0x90, 0xee, 0x90 +palegreen3, 0x7c, 0xcd, 0x7c +palegreen4, 0x54, 0x8b, 0x54 +springgreen1, 0x00, 0xff, 0x7f +springgreen2, 0x00, 0xee, 0x76 +springgreen3, 0x00, 0xcd, 0x66 +springgreen4, 0x00, 0x8b, 0x45 +green1, 0x00, 0xff, 0x00 +green2, 0x00, 0xee, 0x00 +green3, 0x00, 0xcd, 0x00 +green4, 0x00, 0x8b, 0x00 +chartreuse1, 0x7f, 0xff, 0x00 +chartreuse2, 0x76, 0xee, 0x00 +chartreuse3, 0x66, 0xcd, 0x00 +chartreuse4, 0x45, 0x8b, 0x00 +olivedrab1, 0xc0, 0xff, 0x3e +olivedrab2, 0xb3, 0xee, 0x3a +olivedrab3, 0x9a, 0xcd, 0x32 +olivedrab4, 0x69, 0x8b, 0x22 +darkolivegreen1, 0xca, 0xff, 0x70 +darkolivegreen2, 0xbc, 0xee, 0x68 +darkolivegreen3, 0xa2, 0xcd, 0x5a +darkolivegreen4, 0x6e, 0x8b, 0x3d +khaki1, 0xff, 0xf6, 0x8f +khaki2, 0xee, 0xe6, 0x85 +khaki3, 0xcd, 0xc6, 0x73 +khaki4, 0x8b, 0x86, 0x4e +lightgoldenrod1, 0xff, 0xec, 0x8b +lightgoldenrod2, 0xee, 0xdc, 0x82 +lightgoldenrod3, 0xcd, 0xbe, 0x70 +lightgoldenrod4, 0x8b, 0x81, 0x4c +lightyellow1, 0xff, 0xff, 0xe0 +lightyellow2, 0xee, 0xee, 0xd1 +lightyellow3, 0xcd, 0xcd, 0xb4 +lightyellow4, 0x8b, 0x8b, 0x7a +yellow1, 0xff, 0xff, 0x00 +yellow2, 0xee, 0xee, 0x00 +yellow3, 0xcd, 0xcd, 0x00 +yellow4, 0x8b, 0x8b, 0x00 +gold1, 0xff, 0xd7, 0x00 +gold2, 0xee, 0xc9, 0x00 +gold3, 0xcd, 0xad, 0x00 +gold4, 0x8b, 0x75, 0x00 +goldenrod1, 0xff, 0xc1, 0x25 +goldenrod2, 0xee, 0xb4, 0x22 +goldenrod3, 0xcd, 0x9b, 0x1d +goldenrod4, 0x8b, 0x69, 0x14 +darkgoldenrod1, 0xff, 0xb9, 0x0f +darkgoldenrod2, 0xee, 0xad, 0x0e +darkgoldenrod3, 0xcd, 0x95, 0x0c +darkgoldenrod4, 0x8b, 0x65, 0x08 +rosybrown1, 0xff, 0xc1, 0xc1 +rosybrown2, 0xee, 0xb4, 0xb4 +rosybrown3, 0xcd, 0x9b, 0x9b +rosybrown4, 0x8b, 0x69, 0x69 +indianred1, 0xff, 0x6a, 0x6a +indianred2, 0xee, 0x63, 0x63 +indianred3, 0xcd, 0x55, 0x55 +indianred4, 0x8b, 0x3a, 0x3a +sienna1, 0xff, 0x82, 0x47 +sienna2, 0xee, 0x79, 0x42 +sienna3, 0xcd, 0x68, 0x39 +sienna4, 0x8b, 0x47, 0x26 +burlywood1, 0xff, 0xd3, 0x9b +burlywood2, 0xee, 0xc5, 0x91 +burlywood3, 0xcd, 0xaa, 0x7d +burlywood4, 0x8b, 0x73, 0x55 +wheat1, 0xff, 0xe7, 0xba +wheat2, 0xee, 0xd8, 0xae +wheat3, 0xcd, 0xba, 0x96 +wheat4, 0x8b, 0x7e, 0x66 +tan1, 0xff, 0xa5, 0x4f +tan2, 0xee, 0x9a, 0x49 +tan3, 0xcd, 0x85, 0x3f +tan4, 0x8b, 0x5a, 0x2b +chocolate1, 0xff, 0x7f, 0x24 +chocolate2, 0xee, 0x76, 0x21 +chocolate3, 0xcd, 0x66, 0x1d +chocolate4, 0x8b, 0x45, 0x13 +firebrick1, 0xff, 0x30, 0x30 +firebrick2, 0xee, 0x2c, 0x2c +firebrick3, 0xcd, 0x26, 0x26 +firebrick4, 0x8b, 0x1a, 0x1a +brown1, 0xff, 0x40, 0x40 +brown2, 0xee, 0x3b, 0x3b +brown3, 0xcd, 0x33, 0x33 +brown4, 0x8b, 0x23, 0x23 +salmon1, 0xff, 0x8c, 0x69 +salmon2, 0xee, 0x82, 0x62 +salmon3, 0xcd, 0x70, 0x54 +salmon4, 0x8b, 0x4c, 0x39 +lightsalmon1, 0xff, 0xa0, 0x7a +lightsalmon2, 0xee, 0x95, 0x72 +lightsalmon3, 0xcd, 0x81, 0x62 +lightsalmon4, 0x8b, 0x57, 0x42 +orange1, 0xff, 0xa5, 0x00 +orange2, 0xee, 0x9a, 0x00 +orange3, 0xcd, 0x85, 0x00 +orange4, 0x8b, 0x5a, 0x00 +darkorange1, 0xff, 0x7f, 0x00 +darkorange2, 0xee, 0x76, 0x00 +darkorange3, 0xcd, 0x66, 0x00 +darkorange4, 0x8b, 0x45, 0x00 +coral1, 0xff, 0x72, 0x56 +coral2, 0xee, 0x6a, 0x50 +coral3, 0xcd, 0x5b, 0x45 +coral4, 0x8b, 0x3e, 0x2f +tomato1, 0xff, 0x63, 0x47 +tomato2, 0xee, 0x5c, 0x42 +tomato3, 0xcd, 0x4f, 0x39 +tomato4, 0x8b, 0x36, 0x26 +orangered1, 0xff, 0x45, 0x00 +orangered2, 0xee, 0x40, 0x00 +orangered3, 0xcd, 0x37, 0x00 +orangered4, 0x8b, 0x25, 0x00 +red1, 0xff, 0x00, 0x00 +red2, 0xee, 0x00, 0x00 +red3, 0xcd, 0x00, 0x00 +red4, 0x8b, 0x00, 0x00 +deeppink1, 0xff, 0x14, 0x93 +deeppink2, 0xee, 0x12, 0x89 +deeppink3, 0xcd, 0x10, 0x76 +deeppink4, 0x8b, 0x0a, 0x50 +hotpink1, 0xff, 0x6e, 0xb4 +hotpink2, 0xee, 0x6a, 0xa7 +hotpink3, 0xcd, 0x60, 0x90 +hotpink4, 0x8b, 0x3a, 0x62 +pink1, 0xff, 0xb5, 0xc5 +pink2, 0xee, 0xa9, 0xb8 +pink3, 0xcd, 0x91, 0x9e +pink4, 0x8b, 0x63, 0x6c +lightpink1, 0xff, 0xae, 0xb9 +lightpink2, 0xee, 0xa2, 0xad +lightpink3, 0xcd, 0x8c, 0x95 +lightpink4, 0x8b, 0x5f, 0x65 +palevioletred1, 0xff, 0x82, 0xab +palevioletred2, 0xee, 0x79, 0x9f +palevioletred3, 0xcd, 0x68, 0x89 +palevioletred4, 0x8b, 0x47, 0x5d +maroon1, 0xff, 0x34, 0xb3 +maroon2, 0xee, 0x30, 0xa7 +maroon3, 0xcd, 0x29, 0x90 +maroon4, 0x8b, 0x1c, 0x62 +violetred1, 0xff, 0x3e, 0x96 +violetred2, 0xee, 0x3a, 0x8c +violetred3, 0xcd, 0x32, 0x78 +violetred4, 0x8b, 0x22, 0x52 +magenta1, 0xff, 0x00, 0xff +magenta2, 0xee, 0x00, 0xee +magenta3, 0xcd, 0x00, 0xcd +magenta4, 0x8b, 0x00, 0x8b +orchid1, 0xff, 0x83, 0xfa +orchid2, 0xee, 0x7a, 0xe9 +orchid3, 0xcd, 0x69, 0xc9 +orchid4, 0x8b, 0x47, 0x89 +plum1, 0xff, 0xbb, 0xff +plum2, 0xee, 0xae, 0xee +plum3, 0xcd, 0x96, 0xcd +plum4, 0x8b, 0x66, 0x8b +mediumorchid1, 0xe0, 0x66, 0xff +mediumorchid2, 0xd1, 0x5f, 0xee +mediumorchid3, 0xb4, 0x52, 0xcd +mediumorchid4, 0x7a, 0x37, 0x8b +darkorchid1, 0xbf, 0x3e, 0xff +darkorchid2, 0xb2, 0x3a, 0xee +darkorchid3, 0x9a, 0x32, 0xcd +darkorchid4, 0x68, 0x22, 0x8b +purple1, 0x9b, 0x30, 0xff +purple2, 0x91, 0x2c, 0xee +purple3, 0x7d, 0x26, 0xcd +purple4, 0x55, 0x1a, 0x8b +mediumpurple1, 0xab, 0x82, 0xff +mediumpurple2, 0x9f, 0x79, 0xee +mediumpurple3, 0x89, 0x68, 0xcd +mediumpurple4, 0x5d, 0x47, 0x8b +thistle1, 0xff, 0xe1, 0xff +thistle2, 0xee, 0xd2, 0xee +thistle3, 0xcd, 0xb5, 0xcd +thistle4, 0x8b, 0x7b, 0x8b +gray0, 0x00, 0x00, 0x00 +grey0, 0x00, 0x00, 0x00 +gray1, 0x03, 0x03, 0x03 +grey1, 0x03, 0x03, 0x03 +gray2, 0x05, 0x05, 0x05 +grey2, 0x05, 0x05, 0x05 +gray3, 0x08, 0x08, 0x08 +grey3, 0x08, 0x08, 0x08 +gray4, 0x0a, 0x0a, 0x0a +grey4, 0x0a, 0x0a, 0x0a +gray5, 0x0d, 0x0d, 0x0d +grey5, 0x0d, 0x0d, 0x0d +gray6, 0x0f, 0x0f, 0x0f +grey6, 0x0f, 0x0f, 0x0f +gray7, 0x12, 0x12, 0x12 +grey7, 0x12, 0x12, 0x12 +gray8, 0x14, 0x14, 0x14 +grey8, 0x14, 0x14, 0x14 +gray9, 0x17, 0x17, 0x17 +grey9, 0x17, 0x17, 0x17 +gray10, 0x1a, 0x1a, 0x1a +grey10, 0x1a, 0x1a, 0x1a +gray11, 0x1c, 0x1c, 0x1c +grey11, 0x1c, 0x1c, 0x1c +gray12, 0x1f, 0x1f, 0x1f +grey12, 0x1f, 0x1f, 0x1f +gray13, 0x21, 0x21, 0x21 +grey13, 0x21, 0x21, 0x21 +gray14, 0x24, 0x24, 0x24 +grey14, 0x24, 0x24, 0x24 +gray15, 0x26, 0x26, 0x26 +grey15, 0x26, 0x26, 0x26 +gray16, 0x29, 0x29, 0x29 +grey16, 0x29, 0x29, 0x29 +gray17, 0x2b, 0x2b, 0x2b +grey17, 0x2b, 0x2b, 0x2b +gray18, 0x2e, 0x2e, 0x2e +grey18, 0x2e, 0x2e, 0x2e +gray19, 0x30, 0x30, 0x30 +grey19, 0x30, 0x30, 0x30 +gray20, 0x33, 0x33, 0x33 +grey20, 0x33, 0x33, 0x33 +gray21, 0x36, 0x36, 0x36 +grey21, 0x36, 0x36, 0x36 +gray22, 0x38, 0x38, 0x38 +grey22, 0x38, 0x38, 0x38 +gray23, 0x3b, 0x3b, 0x3b +grey23, 0x3b, 0x3b, 0x3b +gray24, 0x3d, 0x3d, 0x3d +grey24, 0x3d, 0x3d, 0x3d +gray25, 0x40, 0x40, 0x40 +grey25, 0x40, 0x40, 0x40 +gray26, 0x42, 0x42, 0x42 +grey26, 0x42, 0x42, 0x42 +gray27, 0x45, 0x45, 0x45 +grey27, 0x45, 0x45, 0x45 +gray28, 0x47, 0x47, 0x47 +grey28, 0x47, 0x47, 0x47 +gray29, 0x4a, 0x4a, 0x4a +grey29, 0x4a, 0x4a, 0x4a +gray30, 0x4d, 0x4d, 0x4d +grey30, 0x4d, 0x4d, 0x4d +gray31, 0x4f, 0x4f, 0x4f +grey31, 0x4f, 0x4f, 0x4f +gray32, 0x52, 0x52, 0x52 +grey32, 0x52, 0x52, 0x52 +gray33, 0x54, 0x54, 0x54 +grey33, 0x54, 0x54, 0x54 +gray34, 0x57, 0x57, 0x57 +grey34, 0x57, 0x57, 0x57 +gray35, 0x59, 0x59, 0x59 +grey35, 0x59, 0x59, 0x59 +gray36, 0x5c, 0x5c, 0x5c +grey36, 0x5c, 0x5c, 0x5c +gray37, 0x5e, 0x5e, 0x5e +grey37, 0x5e, 0x5e, 0x5e +gray38, 0x61, 0x61, 0x61 +grey38, 0x61, 0x61, 0x61 +gray39, 0x63, 0x63, 0x63 +grey39, 0x63, 0x63, 0x63 +gray40, 0x66, 0x66, 0x66 +grey40, 0x66, 0x66, 0x66 +gray41, 0x69, 0x69, 0x69 +grey41, 0x69, 0x69, 0x69 +gray42, 0x6b, 0x6b, 0x6b +grey42, 0x6b, 0x6b, 0x6b +gray43, 0x6e, 0x6e, 0x6e +grey43, 0x6e, 0x6e, 0x6e +gray44, 0x70, 0x70, 0x70 +grey44, 0x70, 0x70, 0x70 +gray45, 0x73, 0x73, 0x73 +grey45, 0x73, 0x73, 0x73 +gray46, 0x75, 0x75, 0x75 +grey46, 0x75, 0x75, 0x75 +gray47, 0x78, 0x78, 0x78 +grey47, 0x78, 0x78, 0x78 +gray48, 0x7a, 0x7a, 0x7a +grey48, 0x7a, 0x7a, 0x7a +gray49, 0x7d, 0x7d, 0x7d +grey49, 0x7d, 0x7d, 0x7d +gray50, 0x7f, 0x7f, 0x7f +grey50, 0x7f, 0x7f, 0x7f +gray51, 0x82, 0x82, 0x82 +grey51, 0x82, 0x82, 0x82 +gray52, 0x85, 0x85, 0x85 +grey52, 0x85, 0x85, 0x85 +gray53, 0x87, 0x87, 0x87 +grey53, 0x87, 0x87, 0x87 +gray54, 0x8a, 0x8a, 0x8a +grey54, 0x8a, 0x8a, 0x8a +gray55, 0x8c, 0x8c, 0x8c +grey55, 0x8c, 0x8c, 0x8c +gray56, 0x8f, 0x8f, 0x8f +grey56, 0x8f, 0x8f, 0x8f +gray57, 0x91, 0x91, 0x91 +grey57, 0x91, 0x91, 0x91 +gray58, 0x94, 0x94, 0x94 +grey58, 0x94, 0x94, 0x94 +gray59, 0x96, 0x96, 0x96 +grey59, 0x96, 0x96, 0x96 +gray60, 0x99, 0x99, 0x99 +grey60, 0x99, 0x99, 0x99 +gray61, 0x9c, 0x9c, 0x9c +grey61, 0x9c, 0x9c, 0x9c +gray62, 0x9e, 0x9e, 0x9e +grey62, 0x9e, 0x9e, 0x9e +gray63, 0xa1, 0xa1, 0xa1 +grey63, 0xa1, 0xa1, 0xa1 +gray64, 0xa3, 0xa3, 0xa3 +grey64, 0xa3, 0xa3, 0xa3 +gray65, 0xa6, 0xa6, 0xa6 +grey65, 0xa6, 0xa6, 0xa6 +gray66, 0xa8, 0xa8, 0xa8 +grey66, 0xa8, 0xa8, 0xa8 +gray67, 0xab, 0xab, 0xab +grey67, 0xab, 0xab, 0xab +gray68, 0xad, 0xad, 0xad +grey68, 0xad, 0xad, 0xad +gray69, 0xb0, 0xb0, 0xb0 +grey69, 0xb0, 0xb0, 0xb0 +gray70, 0xb3, 0xb3, 0xb3 +grey70, 0xb3, 0xb3, 0xb3 +gray71, 0xb5, 0xb5, 0xb5 +grey71, 0xb5, 0xb5, 0xb5 +gray72, 0xb8, 0xb8, 0xb8 +grey72, 0xb8, 0xb8, 0xb8 +gray73, 0xba, 0xba, 0xba +grey73, 0xba, 0xba, 0xba +gray74, 0xbd, 0xbd, 0xbd +grey74, 0xbd, 0xbd, 0xbd +gray75, 0xbf, 0xbf, 0xbf +grey75, 0xbf, 0xbf, 0xbf +gray76, 0xc2, 0xc2, 0xc2 +grey76, 0xc2, 0xc2, 0xc2 +gray77, 0xc4, 0xc4, 0xc4 +grey77, 0xc4, 0xc4, 0xc4 +gray78, 0xc7, 0xc7, 0xc7 +grey78, 0xc7, 0xc7, 0xc7 +gray79, 0xc9, 0xc9, 0xc9 +grey79, 0xc9, 0xc9, 0xc9 +gray80, 0xcc, 0xcc, 0xcc +grey80, 0xcc, 0xcc, 0xcc +gray81, 0xcf, 0xcf, 0xcf +grey81, 0xcf, 0xcf, 0xcf +gray82, 0xd1, 0xd1, 0xd1 +grey82, 0xd1, 0xd1, 0xd1 +gray83, 0xd4, 0xd4, 0xd4 +grey83, 0xd4, 0xd4, 0xd4 +gray84, 0xd6, 0xd6, 0xd6 +grey84, 0xd6, 0xd6, 0xd6 +gray85, 0xd9, 0xd9, 0xd9 +grey85, 0xd9, 0xd9, 0xd9 +gray86, 0xdb, 0xdb, 0xdb +grey86, 0xdb, 0xdb, 0xdb +gray87, 0xde, 0xde, 0xde +grey87, 0xde, 0xde, 0xde +gray88, 0xe0, 0xe0, 0xe0 +grey88, 0xe0, 0xe0, 0xe0 +gray89, 0xe3, 0xe3, 0xe3 +grey89, 0xe3, 0xe3, 0xe3 +gray90, 0xe5, 0xe5, 0xe5 +grey90, 0xe5, 0xe5, 0xe5 +gray91, 0xe8, 0xe8, 0xe8 +grey91, 0xe8, 0xe8, 0xe8 +gray92, 0xeb, 0xeb, 0xeb +grey92, 0xeb, 0xeb, 0xeb +gray93, 0xed, 0xed, 0xed +grey93, 0xed, 0xed, 0xed +gray94, 0xf0, 0xf0, 0xf0 +grey94, 0xf0, 0xf0, 0xf0 +gray95, 0xf2, 0xf2, 0xf2 +grey95, 0xf2, 0xf2, 0xf2 +gray96, 0xf5, 0xf5, 0xf5 +grey96, 0xf5, 0xf5, 0xf5 +gray97, 0xf7, 0xf7, 0xf7 +grey97, 0xf7, 0xf7, 0xf7 +gray98, 0xfa, 0xfa, 0xfa +grey98, 0xfa, 0xfa, 0xfa +gray99, 0xfc, 0xfc, 0xfc +grey99, 0xfc, 0xfc, 0xfc +gray100, 0xff, 0xff, 0xff +grey100, 0xff, 0xff, 0xff +dark grey, 0xa9, 0xa9, 0xa9 +darkgrey, 0xa9, 0xa9, 0xa9 +dark gray, 0xa9, 0xa9, 0xa9 +darkgray, 0xa9, 0xa9, 0xa9 +dark blue, 0x00, 0x00, 0x8b +darkblue, 0x00, 0x00, 0x8b +dark cyan, 0x00, 0x8b, 0x8b +darkcyan, 0x00, 0x8b, 0x8b +dark magenta, 0x8b, 0x00, 0x8b +darkmagenta, 0x8b, 0x00, 0x8b +dark red, 0x8b, 0x00, 0x00 +darkred, 0x8b, 0x00, 0x00 +light green, 0x90, 0xee, 0x90 +lightgreen, 0x90, 0xee, 0x90 diff --git a/ThirdParty/libsixel/src/rgblookup.h b/ThirdParty/libsixel/src/rgblookup.h new file mode 100644 index 0000000000..f250a2f574 --- /dev/null +++ b/ThirdParty/libsixel/src/rgblookup.h @@ -0,0 +1,2551 @@ +/* C code produced by gperf version 3.0.3 */ +/* Command-line: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/gperf -C -N lookup_rgb --ignore-case rgblookup.gperf */ +/* Computed positions: -k'1,3,5-9,12-15,$' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + +#line 2 "rgblookup.gperf" +struct color { + char *name; + unsigned char r; + unsigned char g; + unsigned char b; +}; + +#define TOTAL_KEYWORDS 752 +#define MIN_WORD_LENGTH 3 +#define MAX_WORD_LENGTH 22 +#define MIN_HASH_VALUE 3 +#define MAX_HASH_VALUE 5574 +/* maximum key range = 5572, duplicates = 0 */ + +#ifndef GPERF_DOWNCASE +#define GPERF_DOWNCASE 1 +static unsigned char gperf_downcase[256] = +{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255 +}; +#endif + +#ifndef GPERF_CASE_STRCMP +#define GPERF_CASE_STRCMP 1 +static int +gperf_case_strcmp (s1, s2) +register const char *s1; +register const char *s2; +{ + for (;;) + { + unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; + unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; + if (c1 != 0 && c1 == c2) + continue; + return (int)c1 - (int)c2; + } +} +#endif + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +hash (str, len) +register const char *str; +register unsigned int len; +{ + static const unsigned short asso_values[] = + { + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 520, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 920, 25, + 20, 5, 0, 1007, 841, 16, 915, 840, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 80, 5, 980, 0, 0, + 55, 0, 670, 673, 0, 395, 215, 190, 160, 100, + 1015, 145, 0, 0, 155, 325, 740, 831, 5575, 265, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 80, 5, 980, + 0, 0, 55, 0, 670, 673, 0, 395, 215, 190, + 160, 100, 1015, 145, 0, 0, 155, 325, 740, 831, + 5575, 265, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575 + }; + register unsigned int hval = len; + + switch (hval) + { + default: + hval += asso_values[(unsigned char)str[14]]; + /*FALLTHROUGH*/ + case 14: + hval += asso_values[(unsigned char)str[13]]; + /*FALLTHROUGH*/ + case 13: + hval += asso_values[(unsigned char)str[12]]; + /*FALLTHROUGH*/ + case 12: + hval += asso_values[(unsigned char)str[11]]; + /*FALLTHROUGH*/ + case 11: + case 10: + case 9: + hval += asso_values[(unsigned char)str[8]]; + /*FALLTHROUGH*/ + case 8: + hval += asso_values[(unsigned char)str[7]]; + /*FALLTHROUGH*/ + case 7: + hval += asso_values[(unsigned char)str[6]]; + /*FALLTHROUGH*/ + case 6: + hval += asso_values[(unsigned char)str[5]]; + /*FALLTHROUGH*/ + case 5: + hval += asso_values[(unsigned char)str[4]]; + /*FALLTHROUGH*/ + case 4: + case 3: + hval += asso_values[(unsigned char)str[2]]; + /*FALLTHROUGH*/ + case 2: + case 1: + hval += asso_values[(unsigned char)str[0]]; + break; + } + return hval + asso_values[(unsigned char)str[len - 1]]; +} + +const struct color * +lookup_rgb (str, len) +register const char *str; +register unsigned int len; +{ + static const struct color wordlist[] = + { + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 202 "rgblookup.gperf" + {"red", 0xff, 0x00, 0x00}, +#line 484 "rgblookup.gperf" + {"red4", 0x8b, 0x00, 0x00}, +#line 554 "rgblookup.gperf" + {"grey4", 0x0a, 0x0a, 0x0a}, +#line 634 "rgblookup.gperf" + {"grey44", 0x70, 0x70, 0x70}, +#line 758 "rgblookup.gperf" + {"darkred", 0x8b, 0x00, 0x00}, + {"", 0, 0, 0}, +#line 483 "rgblookup.gperf" + {"red3", 0xcd, 0x00, 0x00}, + {"", 0, 0, 0}, +#line 614 "rgblookup.gperf" + {"grey34", 0x57, 0x57, 0x57}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 552 "rgblookup.gperf" + {"grey3", 0x08, 0x08, 0x08}, +#line 632 "rgblookup.gperf" + {"grey43", 0x6e, 0x6e, 0x6e}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 612 "rgblookup.gperf" + {"grey33", 0x54, 0x54, 0x54}, +#line 694 "rgblookup.gperf" + {"grey74", 0xbd, 0xbd, 0xbd}, + {"", 0, 0, 0}, +#line 482 "rgblookup.gperf" + {"red2", 0xee, 0x00, 0x00}, + {"", 0, 0, 0}, +#line 594 "rgblookup.gperf" + {"grey24", 0x3d, 0x3d, 0x3d}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 481 "rgblookup.gperf" + {"red1", 0xff, 0x00, 0x00}, + {"", 0, 0, 0}, +#line 574 "rgblookup.gperf" + {"grey14", 0x24, 0x24, 0x24}, +#line 692 "rgblookup.gperf" + {"grey73", 0xba, 0xba, 0xba}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 592 "rgblookup.gperf" + {"grey23", 0x3b, 0x3b, 0x3b}, +#line 560 "rgblookup.gperf" + {"grey7", 0x12, 0x12, 0x12}, +#line 640 "rgblookup.gperf" + {"grey47", 0x78, 0x78, 0x78}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 572 "rgblookup.gperf" + {"grey13", 0x21, 0x21, 0x21}, + {"", 0, 0, 0}, +#line 620 "rgblookup.gperf" + {"grey37", 0x5e, 0x5e, 0x5e}, + {"", 0, 0, 0}, +#line 550 "rgblookup.gperf" + {"grey2", 0x05, 0x05, 0x05}, +#line 630 "rgblookup.gperf" + {"grey42", 0x6b, 0x6b, 0x6b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 610 "rgblookup.gperf" + {"grey32", 0x52, 0x52, 0x52}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 700 "rgblookup.gperf" + {"grey77", 0xc4, 0xc4, 0xc4}, +#line 548 "rgblookup.gperf" + {"grey1", 0x03, 0x03, 0x03}, +#line 628 "rgblookup.gperf" + {"grey41", 0x69, 0x69, 0x69}, + {"", 0, 0, 0}, +#line 600 "rgblookup.gperf" + {"grey27", 0x45, 0x45, 0x45}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 608 "rgblookup.gperf" + {"grey31", 0x4f, 0x4f, 0x4f}, +#line 690 "rgblookup.gperf" + {"grey72", 0xb8, 0xb8, 0xb8}, +#line 580 "rgblookup.gperf" + {"grey17", 0x2b, 0x2b, 0x2b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 590 "rgblookup.gperf" + {"grey22", 0x38, 0x38, 0x38}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 570 "rgblookup.gperf" + {"grey12", 0x1f, 0x1f, 0x1f}, +#line 688 "rgblookup.gperf" + {"grey71", 0xb5, 0xb5, 0xb5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 588 "rgblookup.gperf" + {"grey21", 0x36, 0x36, 0x36}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 568 "rgblookup.gperf" + {"grey11", 0x1c, 0x1c, 0x1c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 553 "rgblookup.gperf" + {"gray4", 0x0a, 0x0a, 0x0a}, +#line 633 "rgblookup.gperf" + {"gray44", 0x70, 0x70, 0x70}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 613 "rgblookup.gperf" + {"gray34", 0x57, 0x57, 0x57}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 551 "rgblookup.gperf" + {"gray3", 0x08, 0x08, 0x08}, +#line 631 "rgblookup.gperf" + {"gray43", 0x6e, 0x6e, 0x6e}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 611 "rgblookup.gperf" + {"gray33", 0x54, 0x54, 0x54}, +#line 693 "rgblookup.gperf" + {"gray74", 0xbd, 0xbd, 0xbd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 236 "rgblookup.gperf" + {"snow4", 0x8b, 0x89, 0x89}, +#line 593 "rgblookup.gperf" + {"gray24", 0x3d, 0x3d, 0x3d}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 573 "rgblookup.gperf" + {"gray14", 0x24, 0x24, 0x24}, +#line 691 "rgblookup.gperf" + {"gray73", 0xba, 0xba, 0xba}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 235 "rgblookup.gperf" + {"snow3", 0xcd, 0xc9, 0xc9}, +#line 591 "rgblookup.gperf" + {"gray23", 0x3b, 0x3b, 0x3b}, +#line 559 "rgblookup.gperf" + {"gray7", 0x12, 0x12, 0x12}, +#line 639 "rgblookup.gperf" + {"gray47", 0x78, 0x78, 0x78}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 571 "rgblookup.gperf" + {"gray13", 0x21, 0x21, 0x21}, + {"", 0, 0, 0}, +#line 619 "rgblookup.gperf" + {"gray37", 0x5e, 0x5e, 0x5e}, + {"", 0, 0, 0}, +#line 549 "rgblookup.gperf" + {"gray2", 0x05, 0x05, 0x05}, +#line 629 "rgblookup.gperf" + {"gray42", 0x6b, 0x6b, 0x6b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 609 "rgblookup.gperf" + {"gray32", 0x52, 0x52, 0x52}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 699 "rgblookup.gperf" + {"gray77", 0xc4, 0xc4, 0xc4}, +#line 547 "rgblookup.gperf" + {"gray1", 0x03, 0x03, 0x03}, +#line 627 "rgblookup.gperf" + {"gray41", 0x69, 0x69, 0x69}, + {"", 0, 0, 0}, +#line 599 "rgblookup.gperf" + {"gray27", 0x45, 0x45, 0x45}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 607 "rgblookup.gperf" + {"gray31", 0x4f, 0x4f, 0x4f}, +#line 689 "rgblookup.gperf" + {"gray72", 0xb8, 0xb8, 0xb8}, +#line 579 "rgblookup.gperf" + {"gray17", 0x2b, 0x2b, 0x2b}, + {"", 0, 0, 0}, +#line 234 "rgblookup.gperf" + {"snow2", 0xee, 0xe9, 0xe9}, +#line 589 "rgblookup.gperf" + {"gray22", 0x38, 0x38, 0x38}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 569 "rgblookup.gperf" + {"gray12", 0x1f, 0x1f, 0x1f}, +#line 687 "rgblookup.gperf" + {"gray71", 0xb5, 0xb5, 0xb5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 233 "rgblookup.gperf" + {"snow1", 0xff, 0xfa, 0xfa}, +#line 587 "rgblookup.gperf" + {"gray21", 0x36, 0x36, 0x36}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 567 "rgblookup.gperf" + {"gray11", 0x1c, 0x1c, 0x1c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 376 "rgblookup.gperf" + {"green4", 0x00, 0x8b, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 372 "rgblookup.gperf" + {"springgreen4", 0x00, 0x8b, 0x45}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 375 "rgblookup.gperf" + {"green3", 0x00, 0xcd, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 371 "rgblookup.gperf" + {"springgreen3", 0x00, 0xcd, 0x66}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 193 "rgblookup.gperf" + {"orange", 0xff, 0xa5, 0x00}, +#line 464 "rgblookup.gperf" + {"orange4", 0x8b, 0x5a, 0x00}, + {"", 0, 0, 0}, +#line 201 "rgblookup.gperf" + {"orangered", 0xff, 0x45, 0x00}, +#line 480 "rgblookup.gperf" + {"orangered4", 0x8b, 0x25, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 479 "rgblookup.gperf" + {"orangered3", 0xcd, 0x37, 0x00}, + {"", 0, 0, 0}, +#line 463 "rgblookup.gperf" + {"orange3", 0xcd, 0x85, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 374 "rgblookup.gperf" + {"green2", 0x00, 0xee, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 478 "rgblookup.gperf" + {"orangered2", 0xee, 0x40, 0x00}, + {"", 0, 0, 0}, +#line 370 "rgblookup.gperf" + {"springgreen2", 0x00, 0xee, 0x76}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 477 "rgblookup.gperf" + {"orangered1", 0xff, 0x45, 0x00}, +#line 373 "rgblookup.gperf" + {"green1", 0x00, 0xff, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 165 "rgblookup.gperf" + {"gold", 0xff, 0xd7, 0x00}, +#line 408 "rgblookup.gperf" + {"gold4", 0x8b, 0x75, 0x00}, + {"", 0, 0, 0}, +#line 369 "rgblookup.gperf" + {"springgreen1", 0x00, 0xff, 0x7f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 462 "rgblookup.gperf" + {"orange2", 0xee, 0x9a, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 407 "rgblookup.gperf" + {"gold3", 0xcd, 0xad, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 461 "rgblookup.gperf" + {"orange1", 0xff, 0xa5, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 428 "rgblookup.gperf" + {"sienna4", 0x8b, 0x47, 0x26}, + {"", 0, 0, 0}, +#line 364 "rgblookup.gperf" + {"seagreen4", 0x2e, 0x8b, 0x57}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 360 "rgblookup.gperf" + {"darkseagreen4", 0x69, 0x8b, 0x69}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 427 "rgblookup.gperf" + {"sienna3", 0xcd, 0x68, 0x39}, + {"", 0, 0, 0}, +#line 363 "rgblookup.gperf" + {"seagreen3", 0x43, 0xcd, 0x80}, +#line 406 "rgblookup.gperf" + {"gold2", 0xee, 0xc9, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 359 "rgblookup.gperf" + {"darkseagreen3", 0x9b, 0xcd, 0x9b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 67 "rgblookup.gperf" + {"grey", 0xbe, 0xbe, 0xbe}, +#line 405 "rgblookup.gperf" + {"gold1", 0xff, 0xd7, 0x00}, +#line 452 "rgblookup.gperf" + {"brown4", 0x8b, 0x23, 0x23}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 451 "rgblookup.gperf" + {"brown3", 0xcd, 0x33, 0x33}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 426 "rgblookup.gperf" + {"sienna2", 0xee, 0x79, 0x42}, + {"", 0, 0, 0}, +#line 362 "rgblookup.gperf" + {"seagreen2", 0x4e, 0xee, 0x94}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 358 "rgblookup.gperf" + {"darkseagreen2", 0xb4, 0xee, 0xb4}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 425 "rgblookup.gperf" + {"sienna1", 0xff, 0x82, 0x47}, + {"", 0, 0, 0}, +#line 361 "rgblookup.gperf" + {"seagreen1", 0x54, 0xff, 0x9f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 357 "rgblookup.gperf" + {"darkseagreen1", 0xc1, 0xff, 0xc1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 450 "rgblookup.gperf" + {"brown2", 0xee, 0x3b, 0x3b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 440 "rgblookup.gperf" + {"tan4", 0x8b, 0x5a, 0x2b}, + {"", 0, 0, 0}, +#line 449 "rgblookup.gperf" + {"brown1", 0xff, 0x40, 0x40}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 439 "rgblookup.gperf" + {"tan3", 0xcd, 0x85, 0x3f}, +#line 141 "rgblookup.gperf" + {"green", 0x00, 0xff, 0x00}, +#line 177 "rgblookup.gperf" + {"sienna", 0xa0, 0x52, 0x2d}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 124 "rgblookup.gperf" + {"darkgreen", 0x00, 0x64, 0x00}, + {"", 0, 0, 0}, +#line 138 "rgblookup.gperf" + {"springgreen", 0x00, 0xff, 0x7f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 91 "rgblookup.gperf" + {"blue", 0x00, 0x00, 0xff}, +#line 296 "rgblookup.gperf" + {"blue4", 0x00, 0x00, 0x8b}, +#line 26 "rgblookup.gperf" + {"bisque", 0xff, 0xe4, 0xc4}, +#line 248 "rgblookup.gperf" + {"bisque4", 0x8b, 0x7d, 0x6b}, + {"", 0, 0, 0}, +#line 438 "rgblookup.gperf" + {"tan2", 0xee, 0x9a, 0x49}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 437 "rgblookup.gperf" + {"tan1", 0xff, 0xa5, 0x4f}, +#line 295 "rgblookup.gperf" + {"blue3", 0x00, 0x00, 0xcd}, + {"", 0, 0, 0}, +#line 247 "rgblookup.gperf" + {"bisque3", 0xcd, 0xb7, 0x9e}, + {"", 0, 0, 0}, +#line 66 "rgblookup.gperf" + {"gray", 0xbe, 0xbe, 0xbe}, +#line 195 "rgblookup.gperf" + {"darkorange", 0xff, 0x8c, 0x00}, +#line 468 "rgblookup.gperf" + {"darkorange4", 0x8b, 0x45, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 467 "rgblookup.gperf" + {"darkorange3", 0xcd, 0x66, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 466 "rgblookup.gperf" + {"darkorange2", 0xee, 0x76, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 294 "rgblookup.gperf" + {"blue2", 0x00, 0x00, 0xee}, +#line 465 "rgblookup.gperf" + {"darkorange1", 0xff, 0x7f, 0x00}, +#line 246 "rgblookup.gperf" + {"bisque2", 0xee, 0xd5, 0xb7}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 152 "rgblookup.gperf" + {"forestgreen", 0x22, 0x8b, 0x22}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 293 "rgblookup.gperf" + {"blue1", 0x00, 0x00, 0xff}, + {"", 0, 0, 0}, +#line 245 "rgblookup.gperf" + {"bisque1", 0xff, 0xe4, 0xc4}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 130 "rgblookup.gperf" + {"seagreen", 0x2e, 0x8b, 0x57}, +#line 129 "rgblookup.gperf" + {"sea green", 0x2e, 0x8b, 0x57}, +#line 40 "rgblookup.gperf" + {"azure", 0xf0, 0xff, 0xff}, +#line 284 "rgblookup.gperf" + {"azure4", 0x83, 0x8b, 0x8b}, +#line 128 "rgblookup.gperf" + {"darkseagreen", 0x8f, 0xbc, 0x8f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 283 "rgblookup.gperf" + {"azure3", 0xc1, 0xcd, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 170 "rgblookup.gperf" + {"darkgoldenrod", 0xb8, 0x86, 0x0b}, +#line 416 "rgblookup.gperf" + {"darkgoldenrod4", 0x8b, 0x65, 0x08}, +#line 187 "rgblookup.gperf" + {"brown", 0xa5, 0x2a, 0x2a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 320 "rgblookup.gperf" + {"slategray4", 0x6c, 0x7b, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 415 "rgblookup.gperf" + {"darkgoldenrod3", 0xcd, 0x95, 0x0c}, +#line 319 "rgblookup.gperf" + {"slategray3", 0x9f, 0xb6, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 282 "rgblookup.gperf" + {"azure2", 0xe0, 0xee, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 318 "rgblookup.gperf" + {"slategray2", 0xb9, 0xd3, 0xee}, + {"", 0, 0, 0}, +#line 508 "rgblookup.gperf" + {"maroon4", 0x8b, 0x1c, 0x62}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 317 "rgblookup.gperf" + {"slategray1", 0xc6, 0xe2, 0xff}, +#line 281 "rgblookup.gperf" + {"azure1", 0xf0, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 507 "rgblookup.gperf" + {"maroon3", 0xcd, 0x29, 0x90}, + {"", 0, 0, 0}, +#line 414 "rgblookup.gperf" + {"darkgoldenrod2", 0xee, 0xad, 0x0e}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 184 "rgblookup.gperf" + {"tan", 0xd2, 0xb4, 0x8c}, +#line 413 "rgblookup.gperf" + {"darkgoldenrod1", 0xff, 0xb9, 0x0f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 456 "rgblookup.gperf" + {"salmon4", 0x8b, 0x4c, 0x39}, + {"", 0, 0, 0}, +#line 168 "rgblookup.gperf" + {"goldenrod", 0xda, 0xa5, 0x20}, +#line 412 "rgblookup.gperf" + {"goldenrod4", 0x8b, 0x69, 0x14}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 411 "rgblookup.gperf" + {"goldenrod3", 0xcd, 0x9b, 0x1d}, +#line 176 "rgblookup.gperf" + {"saddlebrown", 0x8b, 0x45, 0x13}, +#line 455 "rgblookup.gperf" + {"salmon3", 0xcd, 0x70, 0x54}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 506 "rgblookup.gperf" + {"maroon2", 0xee, 0x30, 0xa7}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 410 "rgblookup.gperf" + {"goldenrod2", 0xee, 0xb4, 0x22}, + {"", 0, 0, 0}, +#line 505 "rgblookup.gperf" + {"maroon1", 0xff, 0x34, 0xb3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 409 "rgblookup.gperf" + {"goldenrod1", 0xff, 0xc1, 0x25}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 756 "rgblookup.gperf" + {"darkmagenta", 0x8b, 0x00, 0x8b}, +#line 454 "rgblookup.gperf" + {"salmon2", 0xee, 0x82, 0x62}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 757 "rgblookup.gperf" + {"dark red", 0x8b, 0x00, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 453 "rgblookup.gperf" + {"salmon1", 0xff, 0x8c, 0x69}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 748 "rgblookup.gperf" + {"darkgrey", 0xa9, 0xa9, 0xa9}, + {"", 0, 0, 0}, +#line 760 "rgblookup.gperf" + {"lightgreen", 0x90, 0xee, 0x90}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 752 "rgblookup.gperf" + {"darkblue", 0x00, 0x00, 0x8b}, + {"", 0, 0, 0}, +#line 93 "rgblookup.gperf" + {"dodgerblue", 0x1e, 0x90, 0xff}, +#line 300 "rgblookup.gperf" + {"dodgerblue4", 0x10, 0x4e, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 299 "rgblookup.gperf" + {"dodgerblue3", 0x18, 0x74, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 47 "rgblookup.gperf" + {"mistyrose", 0xff, 0xe4, 0xe1}, +#line 280 "rgblookup.gperf" + {"mistyrose4", 0x8b, 0x7d, 0x7b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 279 "rgblookup.gperf" + {"mistyrose3", 0xcd, 0xb7, 0xb5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 298 "rgblookup.gperf" + {"dodgerblue2", 0x1c, 0x86, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 297 "rgblookup.gperf" + {"dodgerblue1", 0x1e, 0x90, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 278 "rgblookup.gperf" + {"mistyrose2", 0xee, 0xd5, 0xd2}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 277 "rgblookup.gperf" + {"mistyrose1", 0xff, 0xe4, 0xe1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 516 "rgblookup.gperf" + {"magenta4", 0x8b, 0x00, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 515 "rgblookup.gperf" + {"magenta3", 0xcd, 0x00, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 476 "rgblookup.gperf" + {"tomato4", 0x8b, 0x36, 0x26}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 212 "rgblookup.gperf" + {"maroon", 0xb0, 0x30, 0x60}, +#line 475 "rgblookup.gperf" + {"tomato3", 0xcd, 0x4f, 0x39}, +#line 750 "rgblookup.gperf" + {"darkgray", 0xa9, 0xa9, 0xa9}, +#line 61 "rgblookup.gperf" + {"slategrey", 0x70, 0x80, 0x90}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 514 "rgblookup.gperf" + {"magenta2", 0xee, 0x00, 0xee}, +#line 82 "rgblookup.gperf" + {"slateblue", 0x6a, 0x5a, 0xcd}, +#line 288 "rgblookup.gperf" + {"slateblue4", 0x47, 0x3c, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 287 "rgblookup.gperf" + {"slateblue3", 0x69, 0x59, 0xcd}, +#line 190 "rgblookup.gperf" + {"salmon", 0xfa, 0x80, 0x72}, + {"", 0, 0, 0}, +#line 513 "rgblookup.gperf" + {"magenta1", 0xff, 0x00, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 474 "rgblookup.gperf" + {"tomato2", 0xee, 0x5c, 0x42}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 286 "rgblookup.gperf" + {"slateblue2", 0x7a, 0x67, 0xee}, + {"", 0, 0, 0}, +#line 473 "rgblookup.gperf" + {"tomato1", 0xff, 0x63, 0x47}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 285 "rgblookup.gperf" + {"slateblue1", 0x83, 0x6f, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 217 "rgblookup.gperf" + {"magenta", 0xff, 0x00, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 180 "rgblookup.gperf" + {"beige", 0xf5, 0xf5, 0xdc}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 123 "rgblookup.gperf" + {"dark green", 0x00, 0x64, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 59 "rgblookup.gperf" + {"slategray", 0x70, 0x80, 0x90}, +#line 19 "rgblookup.gperf" + {"linen", 0xfa, 0xf0, 0xe6}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 199 "rgblookup.gperf" + {"tomato", 0xff, 0x63, 0x47}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 200 "rgblookup.gperf" + {"orange red", 0xff, 0x45, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 57 "rgblookup.gperf" + {"dimgrey", 0x69, 0x69, 0x69}, +#line 56 "rgblookup.gperf" + {"dim grey", 0x69, 0x69, 0x69}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 148 "rgblookup.gperf" + {"limegreen", 0x32, 0xcd, 0x32}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 92 "rgblookup.gperf" + {"dodger blue", 0x1e, 0x90, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 189 "rgblookup.gperf" + {"darksalmon", 0xe9, 0x96, 0x7a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 101 "rgblookup.gperf" + {"steelblue", 0x46, 0x82, 0xb4}, +#line 304 "rgblookup.gperf" + {"steelblue4", 0x36, 0x64, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 303 "rgblookup.gperf" + {"steelblue3", 0x4f, 0x94, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 134 "rgblookup.gperf" + {"lightseagreen", 0x20, 0xb2, 0xaa}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 80 "rgblookup.gperf" + {"darkslateblue", 0x48, 0x3d, 0x8b}, + {"", 0, 0, 0}, +#line 302 "rgblookup.gperf" + {"steelblue2", 0x5c, 0xac, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 301 "rgblookup.gperf" + {"steelblue1", 0x63, 0xb8, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 167 "rgblookup.gperf" + {"lightgoldenrod", 0xee, 0xdd, 0x82}, +#line 396 "rgblookup.gperf" + {"lightgoldenrod4", 0x8b, 0x81, 0x4c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 55 "rgblookup.gperf" + {"dimgray", 0x69, 0x69, 0x69}, +#line 54 "rgblookup.gperf" + {"dim gray", 0x69, 0x69, 0x69}, +#line 352 "rgblookup.gperf" + {"darkslategray4", 0x52, 0x8b, 0x8b}, +#line 395 "rgblookup.gperf" + {"lightgoldenrod3", 0xcd, 0xbe, 0x70}, + {"", 0, 0, 0}, +#line 97 "rgblookup.gperf" + {"skyblue", 0x87, 0xce, 0xeb}, +#line 312 "rgblookup.gperf" + {"skyblue4", 0x4a, 0x70, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 96 "rgblookup.gperf" + {"sky blue", 0x87, 0xce, 0xeb}, +#line 351 "rgblookup.gperf" + {"darkslategray3", 0x79, 0xcd, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 311 "rgblookup.gperf" + {"skyblue3", 0x6c, 0xa6, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 394 "rgblookup.gperf" + {"lightgoldenrod2", 0xee, 0xdc, 0x82}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 734 "rgblookup.gperf" + {"grey94", 0xf0, 0xf0, 0xf0}, +#line 674 "rgblookup.gperf" + {"grey64", 0xa3, 0xa3, 0xa3}, + {"", 0, 0, 0}, +#line 350 "rgblookup.gperf" + {"darkslategray2", 0x8d, 0xee, 0xee}, +#line 393 "rgblookup.gperf" + {"lightgoldenrod1", 0xff, 0xec, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 310 "rgblookup.gperf" + {"skyblue2", 0x7e, 0xc0, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 732 "rgblookup.gperf" + {"grey93", 0xed, 0xed, 0xed}, +#line 672 "rgblookup.gperf" + {"grey63", 0xa1, 0xa1, 0xa1}, + {"", 0, 0, 0}, +#line 349 "rgblookup.gperf" + {"darkslategray1", 0x97, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 309 "rgblookup.gperf" + {"skyblue1", 0x87, 0xce, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 460 "rgblookup.gperf" + {"lightsalmon4", 0x8b, 0x57, 0x42}, +#line 384 "rgblookup.gperf" + {"olivedrab4", 0x69, 0x8b, 0x22}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 194 "rgblookup.gperf" + {"dark orange", 0xff, 0x8c, 0x00}, +#line 154 "rgblookup.gperf" + {"olivedrab", 0x6b, 0x8e, 0x23}, +#line 383 "rgblookup.gperf" + {"olivedrab3", 0x9a, 0xcd, 0x32}, + {"", 0, 0, 0}, +#line 60 "rgblookup.gperf" + {"slate grey", 0x70, 0x80, 0x90}, + {"", 0, 0, 0}, +#line 459 "rgblookup.gperf" + {"lightsalmon3", 0xcd, 0x81, 0x62}, +#line 740 "rgblookup.gperf" + {"grey97", 0xf7, 0xf7, 0xf7}, +#line 680 "rgblookup.gperf" + {"grey67", 0xab, 0xab, 0xab}, +#line 49 "rgblookup.gperf" + {"black", 0x00, 0x00, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 730 "rgblookup.gperf" + {"grey92", 0xeb, 0xeb, 0xeb}, +#line 670 "rgblookup.gperf" + {"grey62", 0x9e, 0x9e, 0x9e}, +#line 382 "rgblookup.gperf" + {"olivedrab2", 0xb3, 0xee, 0x3a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 95 "rgblookup.gperf" + {"deepskyblue", 0x00, 0xbf, 0xff}, +#line 308 "rgblookup.gperf" + {"deepskyblue4", 0x00, 0x68, 0x8b}, +#line 381 "rgblookup.gperf" + {"olivedrab1", 0xc0, 0xff, 0x3e}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 728 "rgblookup.gperf" + {"grey91", 0xe8, 0xe8, 0xe8}, +#line 668 "rgblookup.gperf" + {"grey61", 0x9c, 0x9c, 0x9c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 307 "rgblookup.gperf" + {"deepskyblue3", 0x00, 0x9a, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 458 "rgblookup.gperf" + {"lightsalmon2", 0xee, 0x95, 0x72}, + {"", 0, 0, 0}, +#line 69 "rgblookup.gperf" + {"lightgrey", 0xd3, 0xd3, 0xd3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 457 "rgblookup.gperf" + {"lightsalmon1", 0xff, 0xa0, 0x7a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 714 "rgblookup.gperf" + {"grey84", 0xd6, 0xd6, 0xd6}, +#line 174 "rgblookup.gperf" + {"indianred", 0xcd, 0x5c, 0x5c}, +#line 424 "rgblookup.gperf" + {"indianred4", 0x8b, 0x3a, 0x3a}, +#line 105 "rgblookup.gperf" + {"lightblue", 0xad, 0xd8, 0xe6}, +#line 328 "rgblookup.gperf" + {"lightblue4", 0x68, 0x83, 0x8b}, +#line 733 "rgblookup.gperf" + {"gray94", 0xf0, 0xf0, 0xf0}, +#line 673 "rgblookup.gperf" + {"gray64", 0xa3, 0xa3, 0xa3}, +#line 423 "rgblookup.gperf" + {"indianred3", 0xcd, 0x55, 0x55}, + {"", 0, 0, 0}, +#line 327 "rgblookup.gperf" + {"lightblue3", 0x9a, 0xc0, 0xcd}, +#line 712 "rgblookup.gperf" + {"grey83", 0xd4, 0xd4, 0xd4}, +#line 306 "rgblookup.gperf" + {"deepskyblue2", 0x00, 0xb2, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 9 "rgblookup.gperf" + {"snow", 0xff, 0xfa, 0xfa}, +#line 731 "rgblookup.gperf" + {"gray93", 0xed, 0xed, 0xed}, +#line 671 "rgblookup.gperf" + {"gray63", 0xa1, 0xa1, 0xa1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 305 "rgblookup.gperf" + {"deepskyblue1", 0x00, 0xbf, 0xff}, +#line 422 "rgblookup.gperf" + {"indianred2", 0xee, 0x63, 0x63}, + {"", 0, 0, 0}, +#line 326 "rgblookup.gperf" + {"lightblue2", 0xb2, 0xdf, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 421 "rgblookup.gperf" + {"indianred1", 0xff, 0x6a, 0x6a}, +#line 169 "rgblookup.gperf" + {"dark goldenrod", 0xb8, 0x86, 0x0b}, +#line 325 "rgblookup.gperf" + {"lightblue1", 0xbf, 0xef, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 720 "rgblookup.gperf" + {"grey87", 0xde, 0xde, 0xde}, + {"", 0, 0, 0}, +#line 58 "rgblookup.gperf" + {"slate gray", 0x70, 0x80, 0x90}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 739 "rgblookup.gperf" + {"gray97", 0xf7, 0xf7, 0xf7}, +#line 679 "rgblookup.gperf" + {"gray67", 0xab, 0xab, 0xab}, + {"", 0, 0, 0}, +#line 710 "rgblookup.gperf" + {"grey82", 0xd1, 0xd1, 0xd1}, +#line 755 "rgblookup.gperf" + {"dark magenta", 0x8b, 0x00, 0x8b}, +#line 111 "rgblookup.gperf" + {"darkturquoise", 0x00, 0xce, 0xd1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 729 "rgblookup.gperf" + {"gray92", 0xeb, 0xeb, 0xeb}, +#line 669 "rgblookup.gperf" + {"gray62", 0x9e, 0x9e, 0x9e}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 708 "rgblookup.gperf" + {"grey81", 0xcf, 0xcf, 0xcf}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 727 "rgblookup.gperf" + {"gray91", 0xe8, 0xe8, 0xe8}, +#line 667 "rgblookup.gperf" + {"gray61", 0x9c, 0x9c, 0x9c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 14 "rgblookup.gperf" + {"gainsboro", 0xdc, 0xdc, 0xdc}, + {"", 0, 0, 0}, +#line 71 "rgblookup.gperf" + {"lightgray", 0xd3, 0xd3, 0xd3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 436 "rgblookup.gperf" + {"wheat4", 0x8b, 0x7e, 0x66}, +#line 53 "rgblookup.gperf" + {"darkslategrey", 0x2f, 0x4f, 0x4f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 713 "rgblookup.gperf" + {"gray84", 0xd6, 0xd6, 0xd6}, +#line 435 "rgblookup.gperf" + {"wheat3", 0xcd, 0xba, 0x96}, + {"", 0, 0, 0}, +#line 216 "rgblookup.gperf" + {"violetred", 0xd0, 0x20, 0x90}, +#line 512 "rgblookup.gperf" + {"violetred4", 0x8b, 0x22, 0x52}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 511 "rgblookup.gperf" + {"violetred3", 0xcd, 0x32, 0x78}, +#line 711 "rgblookup.gperf" + {"gray83", 0xd4, 0xd4, 0xd4}, +#line 137 "rgblookup.gperf" + {"spring green", 0x00, 0xff, 0x7f}, +#line 654 "rgblookup.gperf" + {"grey54", 0x8a, 0x8a, 0x8a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 652 "rgblookup.gperf" + {"grey53", 0x87, 0x87, 0x87}, + {"", 0, 0, 0}, +#line 510 "rgblookup.gperf" + {"violetred2", 0xee, 0x3a, 0x8c}, +#line 192 "rgblookup.gperf" + {"lightsalmon", 0xff, 0xa0, 0x7a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 509 "rgblookup.gperf" + {"violetred1", 0xff, 0x3e, 0x96}, + {"", 0, 0, 0}, +#line 434 "rgblookup.gperf" + {"wheat2", 0xee, 0xd8, 0xae}, +#line 719 "rgblookup.gperf" + {"gray87", 0xde, 0xde, 0xde}, +#line 90 "rgblookup.gperf" + {"royalblue", 0x41, 0x69, 0xe1}, +#line 292 "rgblookup.gperf" + {"royalblue4", 0x27, 0x40, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 291 "rgblookup.gperf" + {"royalblue3", 0x3a, 0x5f, 0xcd}, +#line 709 "rgblookup.gperf" + {"gray82", 0xd1, 0xd1, 0xd1}, +#line 433 "rgblookup.gperf" + {"wheat1", 0xff, 0xe7, 0xba}, + {"", 0, 0, 0}, +#line 268 "rgblookup.gperf" + {"ivory4", 0x8b, 0x8b, 0x83}, +#line 660 "rgblookup.gperf" + {"grey57", 0x91, 0x91, 0x91}, + {"", 0, 0, 0}, +#line 99 "rgblookup.gperf" + {"lightskyblue", 0x87, 0xce, 0xfa}, +#line 316 "rgblookup.gperf" + {"lightskyblue4", 0x60, 0x7b, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 707 "rgblookup.gperf" + {"gray81", 0xcf, 0xcf, 0xcf}, + {"", 0, 0, 0}, +#line 650 "rgblookup.gperf" + {"grey52", 0x85, 0x85, 0x85}, +#line 267 "rgblookup.gperf" + {"ivory3", 0xcd, 0xcd, 0xc1}, +#line 290 "rgblookup.gperf" + {"royalblue2", 0x43, 0x6e, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 315 "rgblookup.gperf" + {"lightskyblue3", 0x8d, 0xb6, 0xcd}, +#line 747 "rgblookup.gperf" + {"dark grey", 0xa9, 0xa9, 0xa9}, +#line 289 "rgblookup.gperf" + {"royalblue1", 0x48, 0x76, 0xff}, +#line 759 "rgblookup.gperf" + {"light green", 0x90, 0xee, 0x90}, +#line 151 "rgblookup.gperf" + {"forest green", 0x22, 0x8b, 0x22}, +#line 648 "rgblookup.gperf" + {"grey51", 0x82, 0x82, 0x82}, + {"", 0, 0, 0}, +#line 348 "rgblookup.gperf" + {"cyan4", 0x00, 0x8b, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 175 "rgblookup.gperf" + {"saddle brown", 0x8b, 0x45, 0x13}, +#line 51 "rgblookup.gperf" + {"darkslategray", 0x2f, 0x4f, 0x4f}, +#line 751 "rgblookup.gperf" + {"dark blue", 0x00, 0x00, 0x8b}, +#line 347 "rgblookup.gperf" + {"cyan3", 0x00, 0xcd, 0xcd}, + {"", 0, 0, 0}, +#line 400 "rgblookup.gperf" + {"lightyellow4", 0x8b, 0x8b, 0x7a}, + {"", 0, 0, 0}, +#line 103 "rgblookup.gperf" + {"lightsteelblue", 0xb0, 0xc4, 0xde}, +#line 324 "rgblookup.gperf" + {"lightsteelblue4", 0x6e, 0x7b, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 266 "rgblookup.gperf" + {"ivory2", 0xee, 0xee, 0xe0}, +#line 46 "rgblookup.gperf" + {"misty rose", 0xff, 0xe4, 0xe1}, + {"", 0, 0, 0}, +#line 399 "rgblookup.gperf" + {"lightyellow3", 0xcd, 0xcd, 0xb4}, +#line 314 "rgblookup.gperf" + {"lightskyblue2", 0xa4, 0xd3, 0xee}, + {"", 0, 0, 0}, +#line 323 "rgblookup.gperf" + {"lightsteelblue3", 0xa2, 0xb5, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 653 "rgblookup.gperf" + {"gray54", 0x8a, 0x8a, 0x8a}, +#line 265 "rgblookup.gperf" + {"ivory1", 0xff, 0xff, 0xf0}, +#line 147 "rgblookup.gperf" + {"lime green", 0x32, 0xcd, 0x32}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 313 "rgblookup.gperf" + {"lightskyblue1", 0xb0, 0xe2, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 651 "rgblookup.gperf" + {"gray53", 0x87, 0x87, 0x87}, + {"", 0, 0, 0}, +#line 346 "rgblookup.gperf" + {"cyan2", 0x00, 0xee, 0xee}, +#line 420 "rgblookup.gperf" + {"rosybrown4", 0x8b, 0x69, 0x69}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 419 "rgblookup.gperf" + {"rosybrown3", 0xcd, 0x9b, 0x9b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 345 "rgblookup.gperf" + {"cyan1", 0x00, 0xff, 0xff}, + {"", 0, 0, 0}, +#line 398 "rgblookup.gperf" + {"lightyellow2", 0xee, 0xee, 0xd1}, + {"", 0, 0, 0}, +#line 132 "rgblookup.gperf" + {"mediumseagreen", 0x3c, 0xb3, 0x71}, +#line 322 "rgblookup.gperf" + {"lightsteelblue2", 0xbc, 0xd2, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 43 "rgblookup.gperf" + {"lavender", 0xe6, 0xe6, 0xfa}, + {"", 0, 0, 0}, +#line 659 "rgblookup.gperf" + {"gray57", 0x91, 0x91, 0x91}, +#line 418 "rgblookup.gperf" + {"rosybrown2", 0xee, 0xb4, 0xb4}, +#line 397 "rgblookup.gperf" + {"lightyellow1", 0xff, 0xff, 0xe0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 321 "rgblookup.gperf" + {"lightsteelblue1", 0xca, 0xe1, 0xff}, +#line 417 "rgblookup.gperf" + {"rosybrown1", 0xff, 0xc1, 0xc1}, + {"", 0, 0, 0}, +#line 649 "rgblookup.gperf" + {"gray52", 0x85, 0x85, 0x85}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 749 "rgblookup.gperf" + {"dark gray", 0xa9, 0xa9, 0xa9}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 647 "rgblookup.gperf" + {"gray51", 0x82, 0x82, 0x82}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 181 "rgblookup.gperf" + {"wheat", 0xf5, 0xde, 0xb3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 392 "rgblookup.gperf" + {"khaki4", 0x8b, 0x86, 0x4e}, +#line 81 "rgblookup.gperf" + {"slate blue", 0x6a, 0x5a, 0xcd}, +#line 218 "rgblookup.gperf" + {"violet", 0xee, 0x82, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 391 "rgblookup.gperf" + {"khaki3", 0xcd, 0xc6, 0x73}, +#line 68 "rgblookup.gperf" + {"light grey", 0xd3, 0xd3, 0xd3}, + {"", 0, 0, 0}, +#line 18 "rgblookup.gperf" + {"oldlace", 0xfd, 0xf5, 0xe6}, + {"", 0, 0, 0}, +#line 74 "rgblookup.gperf" + {"navy", 0x00, 0x00, 0x80}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 188 "rgblookup.gperf" + {"dark salmon", 0xe9, 0x96, 0x7a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 496 "rgblookup.gperf" + {"pink4", 0x8b, 0x63, 0x6c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 240 "rgblookup.gperf" + {"seashell4", 0x8b, 0x86, 0x82}, +#line 495 "rgblookup.gperf" + {"pink3", 0xcd, 0x91, 0x9e}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 390 "rgblookup.gperf" + {"khaki2", 0xee, 0xe6, 0x85}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 239 "rgblookup.gperf" + {"seashell3", 0xcd, 0xc5, 0xbf}, + {"", 0, 0, 0}, +#line 472 "rgblookup.gperf" + {"coral4", 0x8b, 0x3e, 0x2f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 389 "rgblookup.gperf" + {"khaki1", 0xff, 0xf6, 0x8f}, +#line 232 "rgblookup.gperf" + {"thistle", 0xd8, 0xbf, 0xd8}, +#line 544 "rgblookup.gperf" + {"thistle4", 0x8b, 0x7b, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 471 "rgblookup.gperf" + {"coral3", 0xcd, 0x5b, 0x45}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 543 "rgblookup.gperf" + {"thistle3", 0xcd, 0xb5, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 494 "rgblookup.gperf" + {"pink2", 0xee, 0xa9, 0xb8}, +#line 182 "rgblookup.gperf" + {"sandy brown", 0xf4, 0xa4, 0x60}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 115 "rgblookup.gperf" + {"cyan", 0x00, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 238 "rgblookup.gperf" + {"seashell2", 0xee, 0xe5, 0xde}, +#line 493 "rgblookup.gperf" + {"pink1", 0xff, 0xb5, 0xc5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 229 "rgblookup.gperf" + {"purple", 0xa0, 0x20, 0xf0}, +#line 536 "rgblookup.gperf" + {"purple4", 0x55, 0x1a, 0x8b}, + {"", 0, 0, 0}, +#line 237 "rgblookup.gperf" + {"seashell1", 0xff, 0xf5, 0xee}, + {"", 0, 0, 0}, +#line 470 "rgblookup.gperf" + {"coral2", 0xee, 0x6a, 0x50}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 70 "rgblookup.gperf" + {"light gray", 0xd3, 0xd3, 0xd3}, +#line 542 "rgblookup.gperf" + {"thistle2", 0xee, 0xd2, 0xee}, +#line 535 "rgblookup.gperf" + {"purple3", 0x7d, 0x26, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 469 "rgblookup.gperf" + {"coral1", 0xff, 0x72, 0x56}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 541 "rgblookup.gperf" + {"thistle1", 0xff, 0xe1, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 88 "rgblookup.gperf" + {"mediumblue", 0x00, 0x00, 0xcd}, + {"", 0, 0, 0}, +#line 114 "rgblookup.gperf" + {"turquoise", 0x40, 0xe0, 0xd0}, +#line 344 "rgblookup.gperf" + {"turquoise4", 0x00, 0x86, 0x8b}, + {"", 0, 0, 0}, +#line 172 "rgblookup.gperf" + {"rosybrown", 0xbc, 0x8f, 0x8f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 343 "rgblookup.gperf" + {"turquoise3", 0x00, 0xc5, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 534 "rgblookup.gperf" + {"purple2", 0x91, 0x2c, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 342 "rgblookup.gperf" + {"turquoise2", 0x00, 0xe5, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 533 "rgblookup.gperf" + {"purple1", 0x9b, 0x30, 0xff}, +#line 341 "rgblookup.gperf" + {"turquoise1", 0x00, 0xf5, 0xff}, + {"", 0, 0, 0}, +#line 100 "rgblookup.gperf" + {"steel blue", 0x46, 0x82, 0xb4}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 133 "rgblookup.gperf" + {"light sea green", 0x20, 0xb2, 0xaa}, + {"", 0, 0, 0}, +#line 42 "rgblookup.gperf" + {"aliceblue", 0xf0, 0xf8, 0xff}, +#line 33 "rgblookup.gperf" + {"ivory", 0xff, 0xff, 0xf0}, + {"", 0, 0, 0}, +#line 179 "rgblookup.gperf" + {"burlywood", 0xde, 0xb8, 0x87}, +#line 432 "rgblookup.gperf" + {"burlywood4", 0x8b, 0x73, 0x55}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 431 "rgblookup.gperf" + {"burlywood3", 0xcd, 0xaa, 0x7d}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 430 "rgblookup.gperf" + {"burlywood2", 0xee, 0xc5, 0x91}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 429 "rgblookup.gperf" + {"burlywood1", 0xff, 0xd3, 0x9b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 178 "rgblookup.gperf" + {"peru", 0xcd, 0x85, 0x3f}, +#line 524 "rgblookup.gperf" + {"plum4", 0x8b, 0x66, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 523 "rgblookup.gperf" + {"plum3", 0xcd, 0x96, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 65 "rgblookup.gperf" + {"lightslategrey", 0x77, 0x88, 0x99}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 86 "rgblookup.gperf" + {"lightslateblue", 0x84, 0x70, 0xff}, +#line 140 "rgblookup.gperf" + {"lawngreen", 0x7c, 0xfc, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 17 "rgblookup.gperf" + {"old lace", 0xfd, 0xf5, 0xe6}, + {"", 0, 0, 0}, +#line 522 "rgblookup.gperf" + {"plum2", 0xee, 0xae, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 153 "rgblookup.gperf" + {"olive drab", 0x6b, 0x8e, 0x23}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 521 "rgblookup.gperf" + {"plum1", 0xff, 0xbb, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 368 "rgblookup.gperf" + {"palegreen4", 0x54, 0x8b, 0x54}, +#line 131 "rgblookup.gperf" + {"medium sea green", 0x3c, 0xb3, 0x71}, + {"", 0, 0, 0}, +#line 36 "rgblookup.gperf" + {"seashell", 0xff, 0xf5, 0xee}, + {"", 0, 0, 0}, +#line 367 "rgblookup.gperf" + {"palegreen3", 0x7c, 0xcd, 0x7c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 196 "rgblookup.gperf" + {"coral", 0xff, 0x7f, 0x50}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 404 "rgblookup.gperf" + {"yellow4", 0x8b, 0x8b, 0x00}, + {"", 0, 0, 0}, +#line 366 "rgblookup.gperf" + {"palegreen2", 0x90, 0xee, 0x90}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 365 "rgblookup.gperf" + {"palegreen1", 0x9a, 0xff, 0x9a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 403 "rgblookup.gperf" + {"yellow3", 0xcd, 0xcd, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 173 "rgblookup.gperf" + {"indian red", 0xcd, 0x5c, 0x5c}, +#line 63 "rgblookup.gperf" + {"lightslategray", 0x77, 0x88, 0x99}, +#line 104 "rgblookup.gperf" + {"light blue", 0xad, 0xd8, 0xe6}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 76 "rgblookup.gperf" + {"navyblue", 0x00, 0x00, 0x80}, +#line 127 "rgblookup.gperf" + {"dark sea green", 0x8f, 0xbc, 0x8f}, + {"", 0, 0, 0}, +#line 87 "rgblookup.gperf" + {"medium blue", 0x00, 0x00, 0xcd}, + {"", 0, 0, 0}, +#line 402 "rgblookup.gperf" + {"yellow2", 0xee, 0xee, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 401 "rgblookup.gperf" + {"yellow1", 0xff, 0xff, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 166 "rgblookup.gperf" + {"light goldenrod", 0xee, 0xdd, 0x82}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 48 "rgblookup.gperf" + {"white", 0xff, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 52 "rgblookup.gperf" + {"dark slate grey", 0x2f, 0x4f, 0x4f}, + {"", 0, 0, 0}, +#line 191 "rgblookup.gperf" + {"light salmon", 0xff, 0xa0, 0x7a}, +#line 122 "rgblookup.gperf" + {"aquamarine", 0x7f, 0xff, 0xd4}, +#line 356 "rgblookup.gperf" + {"aquamarine4", 0x45, 0x8b, 0x74}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 355 "rgblookup.gperf" + {"aquamarine3", 0x66, 0xcd, 0xaa}, +#line 215 "rgblookup.gperf" + {"violet red", 0xd0, 0x20, 0x90}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 79 "rgblookup.gperf" + {"dark slate blue", 0x48, 0x3d, 0x8b}, +#line 183 "rgblookup.gperf" + {"sandybrown", 0xf4, 0xa4, 0x60}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 219 "rgblookup.gperf" + {"plum", 0xdd, 0xa0, 0xdd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 354 "rgblookup.gperf" + {"aquamarine2", 0x76, 0xee, 0xc6}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 353 "rgblookup.gperf" + {"aquamarine1", 0x7f, 0xff, 0xd4}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 142 "rgblookup.gperf" + {"chartreuse", 0x7f, 0xff, 0x00}, +#line 380 "rgblookup.gperf" + {"chartreuse4", 0x45, 0x8b, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 89 "rgblookup.gperf" + {"royal blue", 0x41, 0x69, 0xe1}, +#line 379 "rgblookup.gperf" + {"chartreuse3", 0x66, 0xcd, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 136 "rgblookup.gperf" + {"palegreen", 0x98, 0xfb, 0x98}, +#line 84 "rgblookup.gperf" + {"mediumslateblue", 0x7b, 0x68, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 378 "rgblookup.gperf" + {"chartreuse2", 0x76, 0xee, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 207 "rgblookup.gperf" + {"pink", 0xff, 0xc0, 0xcb}, + {"", 0, 0, 0}, +#line 377 "rgblookup.gperf" + {"chartreuse1", 0x7f, 0xff, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 150 "rgblookup.gperf" + {"yellowgreen", 0x9a, 0xcd, 0x32}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 50 "rgblookup.gperf" + {"dark slate gray", 0x2f, 0x4f, 0x4f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 171 "rgblookup.gperf" + {"rosy brown", 0xbc, 0x8f, 0x8f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 185 "rgblookup.gperf" + {"chocolate", 0xd2, 0x69, 0x1e}, +#line 444 "rgblookup.gperf" + {"chocolate4", 0x8b, 0x45, 0x13}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 443 "rgblookup.gperf" + {"chocolate3", 0xcd, 0x66, 0x1d}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 754 "rgblookup.gperf" + {"darkcyan", 0x00, 0x8b, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 159 "rgblookup.gperf" + {"palegoldenrod", 0xee, 0xe8, 0xaa}, + {"", 0, 0, 0}, +#line 442 "rgblookup.gperf" + {"chocolate2", 0xee, 0x76, 0x21}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 441 "rgblookup.gperf" + {"chocolate1", 0xff, 0x7f, 0x24}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 564 "rgblookup.gperf" + {"grey9", 0x17, 0x17, 0x17}, +#line 644 "rgblookup.gperf" + {"grey49", 0x7d, 0x7d, 0x7d}, +#line 558 "rgblookup.gperf" + {"grey6", 0x0f, 0x0f, 0x0f}, +#line 638 "rgblookup.gperf" + {"grey46", 0x75, 0x75, 0x75}, +#line 119 "rgblookup.gperf" + {"cadetblue", 0x5f, 0x9e, 0xa0}, +#line 340 "rgblookup.gperf" + {"cadetblue4", 0x53, 0x86, 0x8b}, +#line 624 "rgblookup.gperf" + {"grey39", 0x63, 0x63, 0x63}, + {"", 0, 0, 0}, +#line 618 "rgblookup.gperf" + {"grey36", 0x5c, 0x5c, 0x5c}, + {"", 0, 0, 0}, +#line 339 "rgblookup.gperf" + {"cadetblue3", 0x7a, 0xc5, 0xcd}, + {"", 0, 0, 0}, +#line 146 "rgblookup.gperf" + {"greenyellow", 0xad, 0xff, 0x2f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 704 "rgblookup.gperf" + {"grey79", 0xc9, 0xc9, 0xc9}, + {"", 0, 0, 0}, +#line 698 "rgblookup.gperf" + {"grey76", 0xc2, 0xc2, 0xc2}, +#line 73 "rgblookup.gperf" + {"midnightblue", 0x19, 0x19, 0x70}, +#line 604 "rgblookup.gperf" + {"grey29", 0x4a, 0x4a, 0x4a}, + {"", 0, 0, 0}, +#line 598 "rgblookup.gperf" + {"grey26", 0x42, 0x42, 0x42}, + {"", 0, 0, 0}, +#line 338 "rgblookup.gperf" + {"cadetblue2", 0x8e, 0xe5, 0xee}, +#line 584 "rgblookup.gperf" + {"grey19", 0x30, 0x30, 0x30}, + {"", 0, 0, 0}, +#line 578 "rgblookup.gperf" + {"grey16", 0x29, 0x29, 0x29}, + {"", 0, 0, 0}, +#line 337 "rgblookup.gperf" + {"cadetblue1", 0x98, 0xf5, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 139 "rgblookup.gperf" + {"lawn green", 0x7c, 0xfc, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 198 "rgblookup.gperf" + {"lightcoral", 0xf0, 0x80, 0x80}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 220 "rgblookup.gperf" + {"orchid", 0xda, 0x70, 0xd6}, +#line 520 "rgblookup.gperf" + {"orchid4", 0x8b, 0x47, 0x89}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 563 "rgblookup.gperf" + {"gray9", 0x17, 0x17, 0x17}, +#line 643 "rgblookup.gperf" + {"gray49", 0x7d, 0x7d, 0x7d}, +#line 557 "rgblookup.gperf" + {"gray6", 0x0f, 0x0f, 0x0f}, +#line 637 "rgblookup.gperf" + {"gray46", 0x75, 0x75, 0x75}, + {"", 0, 0, 0}, +#line 519 "rgblookup.gperf" + {"orchid3", 0xcd, 0x69, 0xc9}, +#line 623 "rgblookup.gperf" + {"gray39", 0x63, 0x63, 0x63}, + {"", 0, 0, 0}, +#line 617 "rgblookup.gperf" + {"gray36", 0x5c, 0x5c, 0x5c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 703 "rgblookup.gperf" + {"gray79", 0xc9, 0xc9, 0xc9}, + {"", 0, 0, 0}, +#line 697 "rgblookup.gperf" + {"gray76", 0xc2, 0xc2, 0xc2}, + {"", 0, 0, 0}, +#line 603 "rgblookup.gperf" + {"gray29", 0x4a, 0x4a, 0x4a}, + {"", 0, 0, 0}, +#line 597 "rgblookup.gperf" + {"gray26", 0x42, 0x42, 0x42}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 583 "rgblookup.gperf" + {"gray19", 0x30, 0x30, 0x30}, + {"", 0, 0, 0}, +#line 577 "rgblookup.gperf" + {"gray16", 0x29, 0x29, 0x29}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 222 "rgblookup.gperf" + {"mediumorchid", 0xba, 0x55, 0xd3}, +#line 528 "rgblookup.gperf" + {"mediumorchid4", 0x7a, 0x37, 0x8b}, +#line 39 "rgblookup.gperf" + {"mintcream", 0xf5, 0xff, 0xfa}, +#line 518 "rgblookup.gperf" + {"orchid2", 0xee, 0x7a, 0xe9}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 276 "rgblookup.gperf" + {"lavenderblush4", 0x8b, 0x83, 0x86}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 527 "rgblookup.gperf" + {"mediumorchid3", 0xb4, 0x52, 0xcd}, + {"", 0, 0, 0}, +#line 517 "rgblookup.gperf" + {"orchid1", 0xff, 0x83, 0xfa}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 275 "rgblookup.gperf" + {"lavenderblush3", 0xcd, 0xc1, 0xc5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 157 "rgblookup.gperf" + {"khaki", 0xf0, 0xe6, 0x8c}, + {"", 0, 0, 0}, +#line 41 "rgblookup.gperf" + {"alice blue", 0xf0, 0xf8, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 110 "rgblookup.gperf" + {"dark turquoise", 0x00, 0xce, 0xd1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 562 "rgblookup.gperf" + {"grey8", 0x14, 0x14, 0x14}, +#line 642 "rgblookup.gperf" + {"grey48", 0x7a, 0x7a, 0x7a}, + {"", 0, 0, 0}, +#line 526 "rgblookup.gperf" + {"mediumorchid2", 0xd1, 0x5f, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 622 "rgblookup.gperf" + {"grey38", 0x61, 0x61, 0x61}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 274 "rgblookup.gperf" + {"lavenderblush2", 0xee, 0xe0, 0xe5}, +#line 546 "rgblookup.gperf" + {"grey0", 0x00, 0x00, 0x00}, +#line 626 "rgblookup.gperf" + {"grey40", 0x66, 0x66, 0x66}, + {"", 0, 0, 0}, +#line 525 "rgblookup.gperf" + {"mediumorchid1", 0xe0, 0x66, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 606 "rgblookup.gperf" + {"grey30", 0x4d, 0x4d, 0x4d}, +#line 702 "rgblookup.gperf" + {"grey78", 0xc7, 0xc7, 0xc7}, + {"", 0, 0, 0}, +#line 273 "rgblookup.gperf" + {"lavenderblush1", 0xff, 0xf0, 0xf5}, + {"", 0, 0, 0}, +#line 602 "rgblookup.gperf" + {"grey28", 0x47, 0x47, 0x47}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 582 "rgblookup.gperf" + {"grey18", 0x2e, 0x2e, 0x2e}, +#line 686 "rgblookup.gperf" + {"grey70", 0xb3, 0xb3, 0xb3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 332 "rgblookup.gperf" + {"lightcyan4", 0x7a, 0x8b, 0x8b}, +#line 586 "rgblookup.gperf" + {"grey20", 0x33, 0x33, 0x33}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 331 "rgblookup.gperf" + {"lightcyan3", 0xb4, 0xcd, 0xcd}, +#line 566 "rgblookup.gperf" + {"grey10", 0x1a, 0x1a, 0x1a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 330 "rgblookup.gperf" + {"lightcyan2", 0xd1, 0xee, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 329 "rgblookup.gperf" + {"lightcyan1", 0xe0, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 226 "rgblookup.gperf" + {"darkviolet", 0x94, 0x00, 0xd3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 144 "rgblookup.gperf" + {"mediumspringgreen", 0x00, 0xfa, 0x9a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 161 "rgblookup.gperf" + {"lightgoldenrodyellow", 0xfa, 0xfa, 0xd2}, + {"", 0, 0, 0}, +#line 388 "rgblookup.gperf" + {"darkolivegreen4", 0x6e, 0x8b, 0x3d}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 163 "rgblookup.gperf" + {"lightyellow", 0xff, 0xff, 0xe0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 387 "rgblookup.gperf" + {"darkolivegreen3", 0xa2, 0xcd, 0x5a}, + {"", 0, 0, 0}, +#line 561 "rgblookup.gperf" + {"gray8", 0x14, 0x14, 0x14}, +#line 641 "rgblookup.gperf" + {"gray48", 0x7a, 0x7a, 0x7a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 135 "rgblookup.gperf" + {"pale green", 0x98, 0xfb, 0x98}, +#line 621 "rgblookup.gperf" + {"gray38", 0x61, 0x61, 0x61}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 545 "rgblookup.gperf" + {"gray0", 0x00, 0x00, 0x00}, +#line 625 "rgblookup.gperf" + {"gray40", 0x66, 0x66, 0x66}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 605 "rgblookup.gperf" + {"gray30", 0x4d, 0x4d, 0x4d}, +#line 701 "rgblookup.gperf" + {"gray78", 0xc7, 0xc7, 0xc7}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 272 "rgblookup.gperf" + {"honeydew4", 0x83, 0x8b, 0x83}, +#line 601 "rgblookup.gperf" + {"gray28", 0x47, 0x47, 0x47}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 581 "rgblookup.gperf" + {"gray18", 0x2e, 0x2e, 0x2e}, +#line 685 "rgblookup.gperf" + {"gray70", 0xb3, 0xb3, 0xb3}, +#line 386 "rgblookup.gperf" + {"darkolivegreen2", 0xbc, 0xee, 0x68}, + {"", 0, 0, 0}, +#line 271 "rgblookup.gperf" + {"honeydew3", 0xc1, 0xcd, 0xc1}, +#line 585 "rgblookup.gperf" + {"gray20", 0x33, 0x33, 0x33}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 565 "rgblookup.gperf" + {"gray10", 0x1a, 0x1a, 0x1a}, + {"", 0, 0, 0}, +#line 385 "rgblookup.gperf" + {"darkolivegreen1", 0xca, 0xff, 0x70}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 113 "rgblookup.gperf" + {"mediumturquoise", 0x48, 0xd1, 0xcc}, +#line 75 "rgblookup.gperf" + {"navy blue", 0x00, 0x00, 0x80}, +#line 270 "rgblookup.gperf" + {"honeydew2", 0xe0, 0xee, 0xe0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 269 "rgblookup.gperf" + {"honeydew1", 0xf0, 0xff, 0xf0}, +#line 64 "rgblookup.gperf" + {"light slate grey", 0x77, 0x88, 0x99}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 221 "rgblookup.gperf" + {"medium orchid", 0xba, 0x55, 0xd3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 556 "rgblookup.gperf" + {"grey5", 0x0d, 0x0d, 0x0d}, +#line 636 "rgblookup.gperf" + {"grey45", 0x73, 0x73, 0x73}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 117 "rgblookup.gperf" + {"lightcyan", 0xe0, 0xff, 0xff}, +#line 616 "rgblookup.gperf" + {"grey35", 0x59, 0x59, 0x59}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 696 "rgblookup.gperf" + {"grey75", 0xbf, 0xbf, 0xbf}, + {"", 0, 0, 0}, +#line 94 "rgblookup.gperf" + {"deep sky blue", 0x00, 0xbf, 0xff}, + {"", 0, 0, 0}, +#line 596 "rgblookup.gperf" + {"grey25", 0x40, 0x40, 0x40}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 576 "rgblookup.gperf" + {"grey15", 0x26, 0x26, 0x26}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 231 "rgblookup.gperf" + {"mediumpurple", 0x93, 0x70, 0xdb}, +#line 540 "rgblookup.gperf" + {"mediumpurple4", 0x5d, 0x47, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 492 "rgblookup.gperf" + {"hotpink4", 0x8b, 0x3a, 0x62}, +#line 126 "rgblookup.gperf" + {"darkolivegreen", 0x55, 0x6b, 0x2f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 62 "rgblookup.gperf" + {"light slate gray", 0x77, 0x88, 0x99}, + {"", 0, 0, 0}, +#line 539 "rgblookup.gperf" + {"mediumpurple3", 0x89, 0x68, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 491 "rgblookup.gperf" + {"hotpink3", 0xcd, 0x60, 0x90}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 25 "rgblookup.gperf" + {"blanchedalmond", 0xff, 0xeb, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 538 "rgblookup.gperf" + {"mediumpurple2", 0x9f, 0x79, 0xee}, +#line 555 "rgblookup.gperf" + {"gray5", 0x0d, 0x0d, 0x0d}, +#line 635 "rgblookup.gperf" + {"gray45", 0x73, 0x73, 0x73}, +#line 490 "rgblookup.gperf" + {"hotpink2", 0xee, 0x6a, 0xa7}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 98 "rgblookup.gperf" + {"light sky blue", 0x87, 0xce, 0xfa}, +#line 615 "rgblookup.gperf" + {"gray35", 0x59, 0x59, 0x59}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 537 "rgblookup.gperf" + {"mediumpurple1", 0xab, 0x82, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 489 "rgblookup.gperf" + {"hotpink1", 0xff, 0x6e, 0xb4}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 695 "rgblookup.gperf" + {"gray75", 0xbf, 0xbf, 0xbf}, + {"", 0, 0, 0}, +#line 448 "rgblookup.gperf" + {"firebrick4", 0x8b, 0x1a, 0x1a}, + {"", 0, 0, 0}, +#line 595 "rgblookup.gperf" + {"gray25", 0x40, 0x40, 0x40}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 447 "rgblookup.gperf" + {"firebrick3", 0xcd, 0x26, 0x26}, + {"", 0, 0, 0}, +#line 575 "rgblookup.gperf" + {"gray15", 0x26, 0x26, 0x26}, +#line 102 "rgblookup.gperf" + {"light steel blue", 0xb0, 0xc4, 0xde}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 38 "rgblookup.gperf" + {"mint cream", 0xf5, 0xff, 0xfa}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 446 "rgblookup.gperf" + {"firebrick2", 0xee, 0x2c, 0x2c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 445 "rgblookup.gperf" + {"firebrick1", 0xff, 0x30, 0x30}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 753 "rgblookup.gperf" + {"dark cyan", 0x00, 0x8b, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 158 "rgblookup.gperf" + {"pale goldenrod", 0xee, 0xe8, 0xaa}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 121 "rgblookup.gperf" + {"mediumaquamarine", 0x66, 0xcd, 0xaa}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 109 "rgblookup.gperf" + {"paleturquoise", 0xaf, 0xee, 0xee}, +#line 336 "rgblookup.gperf" + {"paleturquoise4", 0x66, 0x8b, 0x8b}, + {"", 0, 0, 0}, +#line 197 "rgblookup.gperf" + {"light coral", 0xf0, 0x80, 0x80}, +#line 83 "rgblookup.gperf" + {"medium slate blue", 0x7b, 0x68, 0xee}, + {"", 0, 0, 0}, +#line 13 "rgblookup.gperf" + {"whitesmoke", 0xf5, 0xf5, 0xf5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 335 "rgblookup.gperf" + {"paleturquoise3", 0x96, 0xcd, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 118 "rgblookup.gperf" + {"cadet blue", 0x5f, 0x9e, 0xa0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 21 "rgblookup.gperf" + {"antiquewhite", 0xfa, 0xeb, 0xd7}, +#line 244 "rgblookup.gperf" + {"antiquewhite4", 0x8b, 0x83, 0x78}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 228 "rgblookup.gperf" + {"blueviolet", 0x8a, 0x2b, 0xe2}, +#line 20 "rgblookup.gperf" + {"antique white", 0xfa, 0xeb, 0xd7}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 243 "rgblookup.gperf" + {"antiquewhite3", 0xcd, 0xc0, 0xb0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 334 "rgblookup.gperf" + {"paleturquoise2", 0xae, 0xee, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 333 "rgblookup.gperf" + {"paleturquoise1", 0xbb, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 164 "rgblookup.gperf" + {"yellow", 0xff, 0xff, 0x00}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 31 "rgblookup.gperf" + {"moccasin", 0xff, 0xe4, 0xb5}, +#line 488 "rgblookup.gperf" + {"deeppink4", 0x8b, 0x0a, 0x50}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 242 "rgblookup.gperf" + {"antiquewhite2", 0xee, 0xdf, 0xcc}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 487 "rgblookup.gperf" + {"deeppink3", 0xcd, 0x10, 0x76}, +#line 149 "rgblookup.gperf" + {"yellow green", 0x9a, 0xcd, 0x32}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 85 "rgblookup.gperf" + {"light slate blue", 0x84, 0x70, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 241 "rgblookup.gperf" + {"antiquewhite1", 0xff, 0xef, 0xdb}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 264 "rgblookup.gperf" + {"cornsilk4", 0x8b, 0x88, 0x78}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 223 "rgblookup.gperf" + {"dark orchid", 0x99, 0x32, 0xcc}, +#line 263 "rgblookup.gperf" + {"cornsilk3", 0xcd, 0xc8, 0xb1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 486 "rgblookup.gperf" + {"deeppink2", 0xee, 0x12, 0x89}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 485 "rgblookup.gperf" + {"deeppink1", 0xff, 0x14, 0x93}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 262 "rgblookup.gperf" + {"cornsilk2", 0xee, 0xe8, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 160 "rgblookup.gperf" + {"light goldenrod yellow", 0xfa, 0xfa, 0xd2}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 261 "rgblookup.gperf" + {"cornsilk1", 0xff, 0xf8, 0xdc}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 12 "rgblookup.gperf" + {"white smoke", 0xf5, 0xf5, 0xf5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 116 "rgblookup.gperf" + {"light cyan", 0xe0, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 214 "rgblookup.gperf" + {"mediumvioletred", 0xc7, 0x15, 0x85}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 107 "rgblookup.gperf" + {"powderblue", 0xb0, 0xe0, 0xe6}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 120 "rgblookup.gperf" + {"medium aquamarine", 0x66, 0xcd, 0xaa}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 225 "rgblookup.gperf" + {"dark violet", 0x94, 0x00, 0xd3}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 125 "rgblookup.gperf" + {"dark olive green", 0x55, 0x6b, 0x2f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 224 "rgblookup.gperf" + {"darkorchid", 0x99, 0x32, 0xcc}, +#line 532 "rgblookup.gperf" + {"darkorchid4", 0x68, 0x22, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 531 "rgblookup.gperf" + {"darkorchid3", 0x9a, 0x32, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 530 "rgblookup.gperf" + {"darkorchid2", 0xb2, 0x3a, 0xee}, +#line 204 "rgblookup.gperf" + {"hotpink", 0xff, 0x69, 0xb4}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 529 "rgblookup.gperf" + {"darkorchid1", 0xbf, 0x3e, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 45 "rgblookup.gperf" + {"lavenderblush", 0xff, 0xf0, 0xf5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 15 "rgblookup.gperf" + {"floral white", 0xff, 0xfa, 0xf0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 186 "rgblookup.gperf" + {"firebrick", 0xb2, 0x22, 0x22}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 744 "rgblookup.gperf" + {"grey99", 0xfc, 0xfc, 0xfc}, +#line 684 "rgblookup.gperf" + {"grey69", 0xb0, 0xb0, 0xb0}, +#line 738 "rgblookup.gperf" + {"grey96", 0xf5, 0xf5, 0xf5}, +#line 678 "rgblookup.gperf" + {"grey66", 0xa8, 0xa8, 0xa8}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 72 "rgblookup.gperf" + {"midnight blue", 0x19, 0x19, 0x70}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 11 "rgblookup.gperf" + {"ghostwhite", 0xf8, 0xf8, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 106 "rgblookup.gperf" + {"powder blue", 0xb0, 0xe0, 0xe6}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 724 "rgblookup.gperf" + {"grey89", 0xe3, 0xe3, 0xe3}, + {"", 0, 0, 0}, +#line 718 "rgblookup.gperf" + {"grey86", 0xdb, 0xdb, 0xdb}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 743 "rgblookup.gperf" + {"gray99", 0xfc, 0xfc, 0xfc}, +#line 683 "rgblookup.gperf" + {"gray69", 0xb0, 0xb0, 0xb0}, +#line 737 "rgblookup.gperf" + {"gray96", 0xf5, 0xf5, 0xf5}, +#line 677 "rgblookup.gperf" + {"gray66", 0xa8, 0xa8, 0xa8}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 500 "rgblookup.gperf" + {"lightpink4", 0x8b, 0x5f, 0x65}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 499 "rgblookup.gperf" + {"lightpink3", 0xcd, 0x8c, 0x95}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 16 "rgblookup.gperf" + {"floralwhite", 0xff, 0xfa, 0xf0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 498 "rgblookup.gperf" + {"lightpink2", 0xee, 0xa2, 0xad}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 206 "rgblookup.gperf" + {"deeppink", 0xff, 0x14, 0x93}, + {"", 0, 0, 0}, +#line 497 "rgblookup.gperf" + {"lightpink1", 0xff, 0xae, 0xb9}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 32 "rgblookup.gperf" + {"cornsilk", 0xff, 0xf8, 0xdc}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 742 "rgblookup.gperf" + {"grey98", 0xfa, 0xfa, 0xfa}, +#line 682 "rgblookup.gperf" + {"grey68", 0xad, 0xad, 0xad}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 723 "rgblookup.gperf" + {"gray89", 0xe3, 0xe3, 0xe3}, + {"", 0, 0, 0}, +#line 717 "rgblookup.gperf" + {"gray86", 0xdb, 0xdb, 0xdb}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 726 "rgblookup.gperf" + {"grey90", 0xe5, 0xe5, 0xe5}, +#line 666 "rgblookup.gperf" + {"grey60", 0x99, 0x99, 0x99}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 664 "rgblookup.gperf" + {"grey59", 0x96, 0x96, 0x96}, + {"", 0, 0, 0}, +#line 658 "rgblookup.gperf" + {"grey56", 0x8f, 0x8f, 0x8f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 24 "rgblookup.gperf" + {"blanched almond", 0xff, 0xeb, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 78 "rgblookup.gperf" + {"cornflowerblue", 0x64, 0x95, 0xed}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 77 "rgblookup.gperf" + {"cornflower blue", 0x64, 0x95, 0xed}, + {"", 0, 0, 0}, +#line 155 "rgblookup.gperf" + {"dark khaki", 0xbd, 0xb7, 0x6b}, +#line 227 "rgblookup.gperf" + {"blue violet", 0x8a, 0x2b, 0xe2}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 722 "rgblookup.gperf" + {"grey88", 0xe0, 0xe0, 0xe0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 741 "rgblookup.gperf" + {"gray98", 0xfa, 0xfa, 0xfa}, +#line 681 "rgblookup.gperf" + {"gray68", 0xad, 0xad, 0xad}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 706 "rgblookup.gperf" + {"grey80", 0xcc, 0xcc, 0xcc}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 37 "rgblookup.gperf" + {"honeydew", 0xf0, 0xff, 0xf0}, +#line 725 "rgblookup.gperf" + {"gray90", 0xe5, 0xe5, 0xe5}, +#line 665 "rgblookup.gperf" + {"gray60", 0x99, 0x99, 0x99}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 663 "rgblookup.gperf" + {"gray59", 0x96, 0x96, 0x96}, + {"", 0, 0, 0}, +#line 657 "rgblookup.gperf" + {"gray56", 0x8f, 0x8f, 0x8f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 746 "rgblookup.gperf" + {"grey100", 0xff, 0xff, 0xff}, +#line 230 "rgblookup.gperf" + {"medium purple", 0x93, 0x70, 0xdb}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 112 "rgblookup.gperf" + {"medium turquoise", 0x48, 0xd1, 0xcc}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 721 "rgblookup.gperf" + {"gray88", 0xe0, 0xe0, 0xe0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 145 "rgblookup.gperf" + {"green yellow", 0xad, 0xff, 0x2f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 705 "rgblookup.gperf" + {"gray80", 0xcc, 0xcc, 0xcc}, + {"", 0, 0, 0}, +#line 662 "rgblookup.gperf" + {"grey58", 0x94, 0x94, 0x94}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 646 "rgblookup.gperf" + {"grey50", 0x7f, 0x7f, 0x7f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 736 "rgblookup.gperf" + {"grey95", 0xf2, 0xf2, 0xf2}, +#line 676 "rgblookup.gperf" + {"grey65", 0xa6, 0xa6, 0xa6}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 745 "rgblookup.gperf" + {"gray100", 0xff, 0xff, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 156 "rgblookup.gperf" + {"darkkhaki", 0xbd, 0xb7, 0x6b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 661 "rgblookup.gperf" + {"gray58", 0x94, 0x94, 0x94}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 645 "rgblookup.gperf" + {"gray50", 0x7f, 0x7f, 0x7f}, + {"", 0, 0, 0}, +#line 716 "rgblookup.gperf" + {"grey85", 0xd9, 0xd9, 0xd9}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 735 "rgblookup.gperf" + {"gray95", 0xf2, 0xf2, 0xf2}, +#line 675 "rgblookup.gperf" + {"gray65", 0xa6, 0xa6, 0xa6}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 10 "rgblookup.gperf" + {"ghost white", 0xf8, 0xf8, 0xff}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 211 "rgblookup.gperf" + {"palevioletred", 0xdb, 0x70, 0x93}, +#line 504 "rgblookup.gperf" + {"palevioletred4", 0x8b, 0x47, 0x5d}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 503 "rgblookup.gperf" + {"palevioletred3", 0xcd, 0x68, 0x89}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 502 "rgblookup.gperf" + {"palevioletred2", 0xee, 0x79, 0x9f}, + {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 715 "rgblookup.gperf" + {"gray85", 0xd9, 0xd9, 0xd9}, + {"", 0, 0, 0}, +#line 209 "rgblookup.gperf" + {"lightpink", 0xff, 0xb6, 0xc1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 501 "rgblookup.gperf" + {"palevioletred1", 0xff, 0x82, 0xab}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 656 "rgblookup.gperf" + {"grey55", 0x8c, 0x8c, 0x8c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 29 "rgblookup.gperf" + {"navajo white", 0xff, 0xde, 0xad}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 162 "rgblookup.gperf" + {"light yellow", 0xff, 0xff, 0xe0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 108 "rgblookup.gperf" + {"pale turquoise", 0xaf, 0xee, 0xee}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 143 "rgblookup.gperf" + {"medium spring green", 0x00, 0xfa, 0x9a}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 655 "rgblookup.gperf" + {"gray55", 0x8c, 0x8c, 0x8c}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 260 "rgblookup.gperf" + {"lemonchiffon4", 0x8b, 0x89, 0x70}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 259 "rgblookup.gperf" + {"lemonchiffon3", 0xcd, 0xc9, 0xa5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 208 "rgblookup.gperf" + {"light pink", 0xff, 0xb6, 0xc1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 258 "rgblookup.gperf" + {"lemonchiffon2", 0xee, 0xe9, 0xbf}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 257 "rgblookup.gperf" + {"lemonchiffon1", 0xff, 0xfa, 0xcd}, +#line 205 "rgblookup.gperf" + {"deep pink", 0xff, 0x14, 0x93}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 30 "rgblookup.gperf" + {"navajowhite", 0xff, 0xde, 0xad}, +#line 256 "rgblookup.gperf" + {"navajowhite4", 0x8b, 0x79, 0x5e}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 255 "rgblookup.gperf" + {"navajowhite3", 0xcd, 0xb3, 0x8b}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, +#line 252 "rgblookup.gperf" + {"peachpuff4", 0x8b, 0x77, 0x65}, +#line 254 "rgblookup.gperf" + {"navajowhite2", 0xee, 0xcf, 0xa1}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 251 "rgblookup.gperf" + {"peachpuff3", 0xcd, 0xaf, 0x95}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 253 "rgblookup.gperf" + {"navajowhite1", 0xff, 0xde, 0xad}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 250 "rgblookup.gperf" + {"peachpuff2", 0xee, 0xcb, 0xad}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 249 "rgblookup.gperf" + {"peachpuff1", 0xff, 0xda, 0xb9}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 35 "rgblookup.gperf" + {"lemonchiffon", 0xff, 0xfa, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 28 "rgblookup.gperf" + {"peachpuff", 0xff, 0xda, 0xb9}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 44 "rgblookup.gperf" + {"lavender blush", 0xff, 0xf0, 0xf5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 213 "rgblookup.gperf" + {"medium violet red", 0xc7, 0x15, 0x85}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 203 "rgblookup.gperf" + {"hot pink", 0xff, 0x69, 0xb4}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 27 "rgblookup.gperf" + {"peach puff", 0xff, 0xda, 0xb9}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 34 "rgblookup.gperf" + {"lemon chiffon", 0xff, 0xfa, 0xcd}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 210 "rgblookup.gperf" + {"pale violet red", 0xdb, 0x70, 0x93}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 22 "rgblookup.gperf" + {"papaya whip", 0xff, 0xef, 0xd5}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, + {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, {"", 0, 0, 0}, +#line 23 "rgblookup.gperf" + {"papayawhip", 0xff, 0xef, 0xd5} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + unsigned int key = hash (str, len); + + if (key <= MAX_HASH_VALUE) + { + register const char *s = wordlist[key].name; + + if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strcmp (str, s)) + return &wordlist[key]; + } + } + return 0; +} diff --git a/ThirdParty/libsixel/src/scale.c b/ThirdParty/libsixel/src/scale.c new file mode 100644 index 0000000000..595efe3842 --- /dev/null +++ b/ThirdParty/libsixel/src/scale.c @@ -0,0 +1,400 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +#endif /* STDC_HEADERS */ +#if HAVE_MATH_H +# define _USE_MATH_DEFINES /* for MSVC */ +# include +#endif /* HAVE_MATH_H */ +#ifndef M_PI +# define M_PI 3.14159265358979323846 +#endif + +#include + +#if !defined(MAX) +# define MAX(l, r) ((l) > (r) ? (l) : (r)) +#endif +#if !defined(MIN) +#define MIN(l, r) ((l) < (r) ? (l) : (r)) +#endif + + +#if 0 +/* function Nearest Neighbor */ +static double +nearest_neighbor(double const d) +{ + if (d <= 0.5) { + return 1.0; + } + return 0.0; +} +#endif + + +/* function Bi-linear */ +static double +bilinear(double const d) +{ + if (d < 1.0) { + return 1.0 - d; + } + return 0.0; +} + + +/* function Welsh */ +static double +welsh(double const d) +{ + if (d < 1.0) { + return 1.0 - d * d; + } + return 0.0; +} + + +/* function Bi-cubic */ +static double +bicubic(double const d) +{ + if (d <= 1.0) { + return 1.0 + (d - 2.0) * d * d; + } + if (d <= 2.0) { + return 4.0 + d * (-8.0 + d * (5.0 - d)); + } + return 0.0; +} + + +/* function sinc + * sinc(x) = sin(PI * x) / (PI * x) + */ +static double +sinc(double const x) +{ + return sin(M_PI * x) / (M_PI * x); +} + + +/* function Lanczos-2 + * Lanczos(x) = sinc(x) * sinc(x / 2) , |x| <= 2 + * = 0, |x| > 2 + */ +static double +lanczos2(double const d) +{ + if (d == 0.0) { + return 1.0; + } + if (d < 2.0) { + return sinc(d) * sinc(d / 2.0); + } + return 0.0; +} + + +/* function Lanczos-3 + * Lanczos(x) = sinc(x) * sinc(x / 3) , |x| <= 3 + * = 0, |x| > 3 + */ +static double +lanczos3(double const d) +{ + if (d == 0.0) { + return 1.0; + } + if (d < 3.0) { + return sinc(d) * sinc(d / 3.0); + } + return 0.0; +} + +/* function Lanczos-4 + * Lanczos(x) = sinc(x) * sinc(x / 4) , |x| <= 4 + * = 0, |x| > 4 + */ +static double +lanczos4(double const d) +{ + if (d == 0.0) { + return 1.0; + } + if (d < 4.0) { + return sinc(d) * sinc(d / 4.0); + } + return 0.0; +} + + +static double +gaussian(double const d) +{ + return exp(-2.0 * d * d) * sqrt(2.0 / M_PI); +} + + +static double +hanning(double const d) +{ + return 0.5 + 0.5 * cos(d * M_PI); +} + + +static double +hamming(const double d) +{ + return 0.54 + 0.46 * cos(d * M_PI); +} + + +static unsigned char +normalize(double x, double total) +{ + int result; + + result = floor(x / total); + if (result > 255) { + return 0xff; + } + if (result < 0) { + return 0x00; + } + return (unsigned char)result; +} + + +static void +scale_without_resampling( + unsigned char *dst, + unsigned char const *src, + int const srcw, + int const srch, + int const dstw, + int const dsth, + int const depth) +{ + int w; + int h; + int x; + int y; + int i; + int pos; + + for (h = 0; h < dsth; h++) { + for (w = 0; w < dstw; w++) { + x = w * srcw / dstw; + y = h * srch / dsth; + for (i = 0; i < depth; i++) { + pos = (y * srcw + x) * depth + i; + dst[(h * dstw + w) * depth + i] = src[pos]; + } + } + } +} + + +typedef double (*resample_fn_t)(double const d); + +static void +scale_with_resampling( + unsigned char *dst, + unsigned char const *src, + int const srcw, + int const srch, + int const dstw, + int const dsth, + int const depth, + resample_fn_t const f_resample, + double n) +{ + int w; + int h; + int x; + int y; + int i; + int pos; + int x_first, x_last, y_first, y_last; + double center_x, center_y; + double diff_x, diff_y; + double weight; + double total; + double offsets[8]; + + for (h = 0; h < dsth; h++) { + for (w = 0; w < dstw; w++) { + total = 0.0; + for (i = 0; i < depth; i++) { + offsets[i] = 0; + } + + /* retrieve range of affected pixels */ + if (dstw >= srcw) { + center_x = (w + 0.5) * srcw / dstw; + x_first = MAX(center_x - n, 0); + x_last = MIN(center_x + n, srcw - 1); + } else { + center_x = w + 0.5; + x_first = MAX(floor((center_x - n) * srcw / dstw), 0); + x_last = MIN(floor((center_x + n) * srcw / dstw), srcw - 1); + } + if (dsth >= srch) { + center_y = (h + 0.5) * srch / dsth; + y_first = MAX(center_y - n, 0); + y_last = MIN(center_y + n, srch - 1); + } else { + center_y = h + 0.5; + y_first = MAX(floor((center_y - n) * srch / dsth), 0); + y_last = MIN(floor((center_y + n) * srch / dsth), srch - 1); + } + + /* accumerate weights of affected pixels */ + for (y = y_first; y <= y_last; y++) { + for (x = x_first; x <= x_last; x++) { + if (dstw >= srcw) { + diff_x = (x + 0.5) - center_x; + } else { + diff_x = (x + 0.5) * dstw / srcw - center_x; + } + if (dsth >= srch) { + diff_y = (y + 0.5) - center_y; + } else { + diff_y = (y + 0.5) * dsth / srch - center_y; + } + weight = f_resample(fabs(diff_x)) * f_resample(fabs(diff_y)); + for (i = 0; i < depth; i++) { + pos = (y * srcw + x) * depth + i; + offsets[i] += src[pos] * weight; + } + total += weight; + } + } + + /* normalize */ + if (total > 0.0) { + for (i = 0; i < depth; i++) { + pos = (h * dstw + w) * depth + i; + dst[pos] = normalize(offsets[i], total); + } + } + } + } +} + + +SIXELAPI int +sixel_helper_scale_image( + unsigned char /* out */ *dst, + unsigned char const /* in */ *src, /* source image data */ + int /* in */ srcw, /* source image width */ + int /* in */ srch, /* source image height */ + int /* in */ pixelformat, /* one of enum pixelFormat */ + int /* in */ dstw, /* destination image width */ + int /* in */ dsth, /* destination image height */ + int /* in */ method_for_resampling, /* one of methodForResampling */ + sixel_allocator_t /* in */ *allocator) /* allocator object */ +{ + int const depth = sixel_helper_compute_depth(pixelformat); + unsigned char *new_src = NULL; + int nret; + int new_pixelformat; + + if (depth != 3) { + new_src = (unsigned char *)sixel_allocator_malloc(allocator, (size_t)(srcw * srch * 3)); + if (new_src == NULL) { + return (-1); + } + nret = sixel_helper_normalize_pixelformat(new_src, + &new_pixelformat, + src, pixelformat, + srcw, srch); + if (nret != 0) { + sixel_allocator_free(allocator, new_src); + return (-1); + } + + src = new_src; + } else { + new_pixelformat = pixelformat; + } + + /* choose re-sampling strategy */ + switch (method_for_resampling) { + case SIXEL_RES_NEAREST: + scale_without_resampling(dst, src, srcw, srch, dstw, dsth, depth); + break; + case SIXEL_RES_GAUSSIAN: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + gaussian, 1.0); + break; + case SIXEL_RES_HANNING: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + hanning, 1.0); + break; + case SIXEL_RES_HAMMING: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + hamming, 1.0); + break; + case SIXEL_RES_WELSH: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + welsh, 1.0); + break; + case SIXEL_RES_BICUBIC: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + bicubic, 2.0); + break; + case SIXEL_RES_LANCZOS2: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + lanczos2, 3.0); + break; + case SIXEL_RES_LANCZOS3: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + lanczos3, 3.0); + break; + case SIXEL_RES_LANCZOS4: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + lanczos4, 4.0); + break; + case SIXEL_RES_BILINEAR: + default: + scale_with_resampling(dst, src, srcw, srch, dstw, dsth, depth, + bilinear, 1.0); + break; + } + + free(new_src); + return 0; +} + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/sixel.5 b/ThirdParty/libsixel/src/sixel.5 new file mode 100644 index 0000000000..71c9ac5308 --- /dev/null +++ b/ThirdParty/libsixel/src/sixel.5 @@ -0,0 +1,49 @@ +.TH SIXEL 5 "May 21, 2014" +.SH NAME +sixel \- SIXEL format +.SH DESCRIPTION +SIXEL is a bitmap graphics format for terminals and printers introduced +by Digital Equipment Corp. (DEC). +Its data scheme is represented as a terminal-friendly escape sequence. +So if you want to show a SIXEL image file, all you have to do is "cat" +it to your terminal. +.br + +.TP 5 +Terminal requirements: +Several of DEC VT series, VT240/VT241/VT330/VT340/VT282/VT284/VT286/VT382 +.br +RLogin (Japanese terminal emulator) +.br +tanasinn (Works with firefox) +.br +mlterm (Works on each of X, win32/cygwin and framebuffer version) +.br +XTerm (configured with --enable-sixel-graphics and launched with "-ti 340" option) +.br +yaft / yaftx (Works on framebuffer / X11 environment) +.br +DECterm +.br +Kermit for DOS +.br +WRQ Reflection +.br +ZSTEM + +.SH "SEE ALSO" +.BR "img2sixel"(1), " sixel2png"(1), " +.LP +All About SIXELs, Sep 29, 1990: +.IP +.br +ftp://ftp.cs.utk.edu/pub/shuford/terminal/all_about_sixels.txt +.LP +Displaying Sixel Image Files, 2014: +.IP +.br +http://rullf2.xs4all.nl/sg/doc.html +.LP + +.\" end of man page + diff --git a/ThirdParty/libsixel/src/status.c b/ThirdParty/libsixel/src/status.c new file mode 100644 index 0000000000..ec590118af --- /dev/null +++ b/ThirdParty/libsixel/src/status.c @@ -0,0 +1,355 @@ +/* + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_MEMORY_H +# include +#endif /* HAVE_MEMORY_H */ +#ifdef HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#ifdef HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#ifdef HAVE_LIBCURL +# include +#endif /* HAVE_LIBCURL */ + +#include +#include "status.h" + +#define SIXEL_MESSAGE_OK ("succeeded") +#define SIXEL_MESSAGE_FALSE ("unexpected error (SIXEL_FALSE)"); +#define SIXEL_MESSAGE_UNEXPECTED ("unexpected error") +#define SIXEL_MESSAGE_INTERRUPTED ("interrupted by a signal") +#define SIXEL_MESSAGE_BAD_ALLOCATION ("runtime error: bad allocation error") +#define SIXEL_MESSAGE_BAD_ARGUMENT ("runtime error: bad argument detected") +#define SIXEL_MESSAGE_BAD_INPUT ("runtime error: bad input detected") +#define SIXEL_MESSAGE_BAD_INTEGER_OVERFLOW ("runtime error: integer overflow") +#define SIXEL_MESSAGE_RUNTIME_ERROR ("runtime error") +#define SIXEL_MESSAGE_LOGIC_ERROR ("logic error") +#define SIXEL_MESSAGE_NOT_IMPLEMENTED ("feature error: not implemented") +#define SIXEL_MESSAGE_FEATURE_ERROR ("feature error") +#define SIXEL_MESSAGE_STBI_ERROR ("stb_image error") +#define SIXEL_MESSAGE_STBIW_ERROR ("stb_image_write error") +#define SIXEL_MESSAGE_JPEG_ERROR ("libjpeg error") +#define SIXEL_MESSAGE_PNG_ERROR ("libpng error") +#define SIXEL_MESSAGE_GDK_ERROR ("GDK error") +#define SIXEL_MESSAGE_GD_ERROR ("GD error") + + +static char g_buffer[1024] = { 0x0 }; + +/* set detailed error message (thread-unsafe) */ +SIXELAPI void +sixel_helper_set_additional_message( + const char /* in */ *message /* error message */ +) +{ + size_t len; + + if (message == 0) + return; + len = strlen(message); + memcpy(g_buffer, message, len < sizeof(g_buffer) ? len: sizeof(g_buffer) - 1); + g_buffer[sizeof(g_buffer) - 1] = 0; +} + + +/* get detailed error message (thread-unsafe) */ +SIXELAPI char const * +sixel_helper_get_additional_message(void) +{ + return g_buffer; +} + + +/* convert error status code int formatted string */ +SIXELAPI char const * +sixel_helper_format_error( + SIXELSTATUS /* in */ status /* status code */ +) +{ + static char buffer[1024]; + char const *error_string; + char *p; + size_t len; + + switch (status & 0x1000) { + case SIXEL_OK: + switch (status) { + case SIXEL_INTERRUPTED: + error_string = SIXEL_MESSAGE_INTERRUPTED; + break; + case SIXEL_OK: + default: + error_string = SIXEL_MESSAGE_OK; + break; + } + break; + case SIXEL_FALSE: + switch (status & 0x1f00) { + case SIXEL_RUNTIME_ERROR: + switch (status) { + case SIXEL_BAD_ALLOCATION: + error_string = SIXEL_MESSAGE_BAD_ALLOCATION; + break; + case SIXEL_BAD_ARGUMENT: + error_string = SIXEL_MESSAGE_BAD_ARGUMENT; + break; + case SIXEL_BAD_INPUT: + error_string = SIXEL_MESSAGE_BAD_INPUT; + break; + case SIXEL_BAD_INTEGER_OVERFLOW: + error_string = SIXEL_MESSAGE_BAD_INTEGER_OVERFLOW; + break; + default: + error_string = SIXEL_MESSAGE_RUNTIME_ERROR; + break; + } + break; + case SIXEL_LOGIC_ERROR: + error_string = SIXEL_MESSAGE_LOGIC_ERROR; + break; + case SIXEL_FEATURE_ERROR: + switch (status) { + case SIXEL_NOT_IMPLEMENTED: + error_string = SIXEL_MESSAGE_NOT_IMPLEMENTED; + break; + default: + error_string = SIXEL_MESSAGE_FEATURE_ERROR; + break; + } + break; + case SIXEL_LIBC_ERROR: + p = strerror(errno); + len = strlen(p) + 1; + memcpy(buffer, p, len < sizeof(buffer) ? len: sizeof(buffer) - 1); + buffer[sizeof(buffer) - 1] = 0; + error_string = buffer; + break; +#ifdef HAVE_LIBCURL + case SIXEL_CURL_ERROR: + error_string = curl_easy_strerror(status & 0xff); + break; +#endif +#ifdef HAVE_JPEG + case SIXEL_JPEG_ERROR: + error_string = SIXEL_MESSAGE_JPEG_ERROR; + break; +#endif +#ifdef HAVE_LIBPNG + case SIXEL_PNG_ERROR: + error_string = SIXEL_MESSAGE_PNG_ERROR; + break; +#endif +#ifdef HAVE_GDK_PIXBUF2 + case SIXEL_GDK_ERROR: + error_string = SIXEL_MESSAGE_GDK_ERROR; + break; +#endif +#ifdef HAVE_GD + case SIXEL_GD_ERROR: + error_string = SIXEL_MESSAGE_GD_ERROR; + break; +#endif + case SIXEL_STBI_ERROR: + error_string = SIXEL_MESSAGE_STBI_ERROR; + break; + case SIXEL_STBIW_ERROR: + error_string = SIXEL_MESSAGE_STBIW_ERROR; + break; + case SIXEL_FALSE: + error_string = SIXEL_MESSAGE_FALSE; + break; + default: + error_string = SIXEL_MESSAGE_UNEXPECTED; + break; + } + break; + default: + error_string = SIXEL_MESSAGE_UNEXPECTED; + break; + } + return error_string; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + char const *message; + + message = sixel_helper_format_error(SIXEL_OK); + if (strcmp(message, SIXEL_MESSAGE_OK) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_INTERRUPTED); + if (strcmp(message, SIXEL_MESSAGE_INTERRUPTED) != 0) { + goto error; + } + return EXIT_SUCCESS; +error: + perror("test1"); + return nret; +} + + +static int +test2(void) +{ + int nret = EXIT_FAILURE; + char const *message; + + message = sixel_helper_format_error(SIXEL_BAD_ALLOCATION); + if (strcmp(message, SIXEL_MESSAGE_BAD_ALLOCATION) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_BAD_ARGUMENT); + if (strcmp(message, SIXEL_MESSAGE_BAD_ARGUMENT) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_BAD_INPUT); + if (strcmp(message, SIXEL_MESSAGE_BAD_INPUT) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_RUNTIME_ERROR); + if (strcmp(message, SIXEL_MESSAGE_RUNTIME_ERROR) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_LOGIC_ERROR); + if (strcmp(message, SIXEL_MESSAGE_LOGIC_ERROR) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_NOT_IMPLEMENTED); + if (strcmp(message, SIXEL_MESSAGE_NOT_IMPLEMENTED) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_FEATURE_ERROR); + if (strcmp(message, SIXEL_MESSAGE_FEATURE_ERROR) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_LIBC_ERROR); + if (strcmp(message, SIXEL_MESSAGE_UNEXPECTED) == 0) { + goto error; + } + +#ifdef HAVE_LIBCURL + message = sixel_helper_format_error(SIXEL_CURL_ERROR); + if (strcmp(message, SIXEL_MESSAGE_UNEXPECTED) == 0) { + goto error; + } +#endif + +#if HAVE_JPEG + message = sixel_helper_format_error(SIXEL_JPEG_ERROR); + if (strcmp(message, SIXEL_MESSAGE_JPEG_ERROR) != 0) { + goto error; + } +#endif + +#if HAVE_LIBPNG + message = sixel_helper_format_error(SIXEL_PNG_ERROR); + if (strcmp(message, SIXEL_MESSAGE_PNG_ERROR) != 0) { + goto error; + } +#endif + +#if HAVE_GD + message = sixel_helper_format_error(SIXEL_GD_ERROR); + if (strcmp(message, SIXEL_MESSAGE_GD_ERROR) != 0) { + goto error; + } +#endif + +#if HAVE_GDK_PIXBUF2 + message = sixel_helper_format_error(SIXEL_GDK_ERROR); + if (strcmp(message, SIXEL_MESSAGE_GDK_ERROR) != 0) { + goto error; + } +#endif + + message = sixel_helper_format_error(SIXEL_STBI_ERROR); + if (strcmp(message, SIXEL_MESSAGE_STBI_ERROR) != 0) { + goto error; + } + + message = sixel_helper_format_error(SIXEL_STBIW_ERROR); + if (strcmp(message, SIXEL_MESSAGE_STBIW_ERROR) != 0) { + goto error; + } + + return EXIT_SUCCESS; +error: + perror("test2"); + return nret; +} + + +SIXELAPI int +sixel_status_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/status.h b/ThirdParty/libsixel/src/status.h new file mode 100644 index 0000000000..ea23584037 --- /dev/null +++ b/ThirdParty/libsixel/src/status.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_STATUS_H +#define LIBSIXEL_STATUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if HAVE_TESTS +int +sixel_status_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_STATUS_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/stb_image.h b/ThirdParty/libsixel/src/stb_image.h new file mode 100644 index 0000000000..8028c92e67 --- /dev/null +++ b/ThirdParty/libsixel/src/stb_image.h @@ -0,0 +1,7491 @@ +/* stb_image - v2.19 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine + John-Mark Allen + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Phil Jordan + Dave Moore Roy Eltham Hayaki Saito Nathan Reed + Won Chun Luke Graham Johan Duparc Nick Verigakis + the Horde3D community Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Laurent Gomila Cort Stratton Sergio Gonzalez github:snagar + Aruelien Pocheville Thibault Reuille Cass Everitt github:Zelex + Ryamond Barbiero Paul Du Bois Engin Manap github:grim210 + Aldo Culquicondor Philipp Wiesemann Dale Weiler github:sammyhw + Oriol Ferrer Mesia Josh Tobin Matthew Gregan github:phprus + Julian Raschke Gregory Mullen Baldur Karlsson github:poppolopoppo + Christian Floisand Kevin Schmidt github:darealshinji + Blazej Dariusz Roszkowski github:Michaelangel007 +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data) +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy to use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// make more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image now supports loading HDR images in general, and currently +// the Radiance .HDR file format, although the support is provided +// generically. You can still load any file through the existing interface; +// if you attempt to load an HDR file, it will be automatically remapped to +// LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// By default we convert iphone-formatted PNGs back to RGB, even though +// they are internally encoded differently. You can disable this conversion +// by by calling stbi_convert_iphone_png_to_rgb(0), in which case +// you will always just get the native iphone "format" through (which +// is BGR stored in RGB). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// + + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// NOT THREADSAFE +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include +#if HAVE_STDDEF_H +#include // ptrdiff_t on osx +#endif /* HAVE_STDDEF_H */ +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + + +#ifdef _MSC_VER +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#if HAVE_STDINT_H +# include +#endif +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (32 - (y)))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +// assume GCC or Clang on ARM targets +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + fseek((FILE*) user, n, SEEK_CUR); +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +// this is not threadsafe +static const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + if (stbi__g_failure_reason == NULL) + stbi__g_failure_reason = "unknwon error, refer error message before assignment"; + return stbi__g_failure_reason; +} + +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load = flag_true_if_should_flip; +} + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 8) { + STBI_ASSERT(ri.bits_per_channel == 16); + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 16) { + STBI_ASSERT(ri.bits_per_channel == 8); + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) || !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} + +static void stbi__skip(stbi__context *s, int n) +{ + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} + +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} + +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} + +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + return z + ((stbi__uint32)stbi__get16le(s) << 16); +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + + +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + if (k < comp) output[i*comp + k] = data[i*comp+k]/255.0f; + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) + for (j=0; j < count[i]; ++j) + h->size[k++] = (stbi_uc) (i+1); + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); + + sgn = (stbi__int32)j->code_buffer >> 31; // sign bit is always in MSB + k = stbi_lrot(j->code_buffer, n); + STBI_ASSERT(n >= 0 && n < (int) (sizeof(stbi__bmask)/sizeof(*stbi__bmask))); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & ~sgn); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t >= 16) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t >= 16) return stbi__err("bad huffman code","Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc << j->succ_low); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) << shift); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) << shift); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2 + 1, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + // handle 0s at the end of image data from IP Kamera 9060 + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + if (x == 255) { + j->marker = stbi__get8(j->s); + break; + } + } + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + } else { + if (!stbi__process_marker(j, m)) return 0; + } + m = stbi__get_marker(j); + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4]; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) *out++ = y[i], *out++ = 255; + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[288]; + stbi__uint16 value[288]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + if (z->zbuffer >= z->zbuffer_end) return 0; + return *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + STBI_ASSERT(z->code_buffer < (1U << z->num_bits)); + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s == 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + STBI_ASSERT(z->size[b] == s); + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) stbi__fill_bits(a); + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (int) (z->zout - z->zout_start); + limit = old_limit = (int) (z->zout_end - z->zout_start); + while (cur + n > limit) + limit *= 2; + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) + c = stbi__zreceive(a,3)+3; + else { + STBI_ASSERT(c == 18); + c = stbi__zreceive(a,7)+11; + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + STBI_ASSERT(a->num_bits == 0); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[288] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , 288)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + STBI_ASSERT(img_width_bytes <= x); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load = 0; +static int stbi__de_iphone_flag = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag = flag_true_if_should_convert; +} + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); if (s->img_x > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + s->img_y = stbi__get32be(s); if (s->img_y > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + if (scan == STBI__SCAN_header) return 1; + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + // if SCAN_header, have to scan to see if we have a tRNS + } + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth < 8) + ri->bits_per_channel = 8; + else + ri->bits_per_channel = p->depth; + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) n += 16, z >>= 16; + if (z >= 0x00100) n += 8, z >>= 8; + if (z >= 0x00010) n += 4, z >>= 4; + if (z >= 0x00004) n += 2, z >>= 2; + if (z >= 0x00002) n += 1, z >>= 1; + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (bits < 0 || bits > 8) return (0); /* error */ + if (shift < 0) + v <<= -shift; + else + v >>= shift; + if (v < 0 || v >= 256) return (0); + v >>= (8-bits); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; +} stbi__bmp_data; + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - 14 - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - 14 - info.hsz) >> 2; + } + + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - 14 - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int r, g, b, a; + r = stbi__shiftsigned(v & mr, rshift, rcount); + g = stbi__shiftsigned(v & mg, gshift, gcount); + b = stbi__shiftsigned(v & mb, bshift, bcount); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (!r || !g || !b || !a) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + out[z++] = STBI__BYTECAST(r); + out[z++] = STBI__BYTECAST(g); + out[z++] = STBI__BYTECAST(b); + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i], p1[i] = p2[i], p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","TGA file too short"); + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + if (stbi__at_eof(s)) return 0; + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceeded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) { + if (stbi__at_eof(s)) { + STBI_FREE(out); + return stbi__errpuc("bad file","PSD file too short"); + } + *q = (stbi__uint16) stbi__get16be(s); + } + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) { + if (stbi__at_eof(s)) { + STBI_FREE(out); + return stbi__errpuc("bad file","PSD file too short"); + } + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } + } else { + for (i = 0; i < pixelCount; i++, p += 4) { + if (stbi__at_eof(s)) { + STBI_FREE(out); + return stbi__errpuc("bad file","PSD file too short"); + } + *p = stbi__get8(s); + } + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; ytype) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;xchannel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; ichannel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;ichannel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;ichannel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + g->out = (stbi_uc *) stbi__malloc(4 * g->w * g->h); + g->background = (stbi_uc *) stbi__malloc(4 * g->w * g->h); + g->history = (stbi_uc *) stbi__malloc(g->w * g->h); + if (g->out == 0) return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "tranparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to teh color that was there the previous frame. + memset( g->out, 0x00, 4 * g->w * g->h ); + memset( g->background, 0x00, 4 * g->w * g->h ); // state of the background (starts transparent) + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispoase of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (o == NULL) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + out = (stbi_uc*) STBI_REALLOC( out, layers * stride ); + if (delays) { + *delays = (int*) STBI_REALLOC( *delays, sizeof(int) * layers ); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + stbi__rewind( s ); + if (p == NULL) + return 0; + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) *comp = info.ma ? 4 : 3; + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + (void) stbi__get32be(s); + (void) stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) +// Does not support 16-bit-per-channel + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + if (!stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n)) + return 0; + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad3sizes_valid(s->img_n, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad3(s->img_n, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + stbi__getn(s, out, s->img_n * s->img_x * s->img_y); + + if (req_comp && req_comp != s->img_n) { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + + if (maxv > 255) + return stbi__err("max value > 255", "PPM image not 8-bit"); + else + return 1; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/ThirdParty/libsixel/src/stb_image_write.c b/ThirdParty/libsixel/src/stb_image_write.c new file mode 100644 index 0000000000..20227a0ed1 --- /dev/null +++ b/ThirdParty/libsixel/src/stb_image_write.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if !defined(HAVE_MEMCPY) +# define memcpy(d, s, n) (bcopy ((s), (d), (n))) +#endif + +#if !defined(HAVE_MEMMOVE) +# define memmove(d, s, n) (bcopy ((s), (d), (n))) +#endif + +#define STB_IMAGE_WRITE_IMPLEMENTATION + +#if HAVE_DIAGNOSTIC_SIGN_CONVERSION +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-conversion" +#endif +#if HAVE_DIAGNOSTIC_STRICT_OVERFLOW +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wstrict-overflow" +#endif +#if HAVE_DIAGNOSTIC_SWITCH_DEFAULT +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wswitch-default" +#endif +#if HAVE_DIAGNOSTIC_DOUBLE_PROMOTION +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdouble-promotion" +#endif +#include "stb_image_write.h" +#if HAVE_DIAGNOSTIC_DOUBLE_PROMOTION +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_STRICT_OVERFLOW +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_STRICT_OVERFLOW +# pragma GCC diagnostic pop +#endif +#if HAVE_DIAGNOSTIC_SIGN_CONVERSION +# pragma GCC diagnostic pop +#endif + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/stb_image_write.h b/ThirdParty/libsixel/src/stb_image_write.h new file mode 100644 index 0000000000..4319c0de1d --- /dev/null +++ b/ThirdParty/libsixel/src/stb_image_write.h @@ -0,0 +1,1048 @@ +/* stb_image_write - v1.02 - public domain - http://nothings.org/stb/stb_image_write.h + writes out PNG/BMP/TGA images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio. It could be + adapted to write to memory or a general streaming interface; let me know. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation. This library is designed + for source code compactness and simplicity, not optimal image file size + or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can define STBIW_MEMMOVE() to replace memmove() + +USAGE: + + There are four functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + There are also four equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + +CREDITS: + + PNG/BMP/TGA + Sean Barrett + HDR + Baldur Karlsson + TGA monochrome: + Jean-Sebastien Guay + misc enhancements: + Tim Kelsey + TGA RLE + Alan Hickman + initial file IO callback implementation + Emmanuel Julien + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + +LICENSE + +This software is dual-licensed to the public domain and under the following +license: you are granted a perpetual, irrevocable license to copy, modify, +publish, and distribute this file as you see fit. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#define STBIWDEF extern +extern int stbi_write_tga_with_rle; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + +#ifdef __cplusplus +} +#endif + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +typedef struct +{ + stbi_write_func *func; + void *context; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi_write_tga_with_rle = 1; +#else +int stbi_write_tga_with_rle = 1; +#endif + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + unsigned char arr[3]; + arr[0] = a, arr[1] = b, arr[2] = c; + s->func(s->context, arr, 3); +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + s->func(s->context, &d[comp - 1], 1); + + switch (comp) { + case 1: + s->func(s->context,d,1); + break; + case 2: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + s->func(s->context, d, 1); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + s->func(s->context, &d[comp - 1], 1); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (vdir < 0) + j_end = -1, j = y-1; + else + j_end = y, j = 0; + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + for (j = y - 1; j >= 0; --j) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + s->func(s->context, &header, 1); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + s->func(s->context, &header, 1); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + } + return 1; +} + +int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson +#ifndef STBI_WRITE_NO_STDIO + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*i*x); + STBIW_FREE(scratch); + return 1; + } +} + +int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(char**)); + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) best=d,bestloc=hlist[j]; + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) s1 += data[j+i], s2 += s1; + s1 %= 65521, s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int i,j,k,p,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = j ? mapping : firstmap; + int best = 0, bestval = 0x7fffffff; + for (p=0; p < 2; ++p) { + for (k= p?best:0; k < 5; ++k) { + int type = mymap[k],est=0; + unsigned char *z = pixels + stride_bytes*j; + for (i=0; i < n; ++i) + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-stride_bytes]; break; + case 3: line_buffer[i] = z[i] - (z[i-stride_bytes]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-stride_bytes],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + for (i=n; i < x*n; ++i) { + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i] - z[i-n]; break; + case 2: line_buffer[i] = z[i] - z[i-stride_bytes]; break; + case 3: line_buffer[i] = z[i] - ((z[i-n] + z[i-stride_bytes])>>1); break; + case 4: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-stride_bytes], z[i-stride_bytes-n]); break; + case 5: line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } + } + if (p) break; + for (i=0; i < x*n; ++i) + est += abs((signed char) line_buffer[i]); + if (est < bestval) { bestval = est; best = k; } + } + } + // when we get here, best contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) best; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, 8); // increase 8 to get smaller but use more memory + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + f = fopen(filename, "wb"); + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ diff --git a/ThirdParty/libsixel/src/tests.c b/ThirdParty/libsixel/src/tests.c new file mode 100644 index 0000000000..f9b15f9a7d --- /dev/null +++ b/ThirdParty/libsixel/src/tests.c @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_STDRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_MATH_H +# include +#endif /* HAVE_MATH_H */ +#if HAVE_LIMITS_H +# include +#endif /* HAVE_LIMITS_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_INTTYPES_H */ + +#include +#include "dither.h" +#include "quant.h" +#include "frame.h" +#include "pixelformat.h" +#include "writer.h" +#include "encoder.h" +#include "decoder.h" +#include "status.h" +#include "loader.h" +#include "fromgif.h" +#include "chunk.h" +#include "allocator.h" + +#if HAVE_TESTS + +int +main(int argc, char *argv[]) +{ + int nret = EXIT_FAILURE; + + (void) argc; + (void) argv; + + nret = sixel_fromgif_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("fromgif ok."); + fflush(stdout); + + nret = sixel_loader_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("loader ok."); + fflush(stdout); + + nret = sixel_dither_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("dither ok."); + fflush(stdout); + + nret = sixel_pixelformat_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("pixelformat ok."); + fflush(stdout); + + nret = sixel_frame_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("frame ok."); + fflush(stdout); + + nret = sixel_writer_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("writer ok."); + fflush(stdout); + + nret = sixel_quant_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("quant ok."); + fflush(stdout); + + nret = sixel_encoder_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("encoder ok."); + fflush(stdout); + + nret = sixel_decoder_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("decoder ok."); + fflush(stdout); + + nret = sixel_status_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("status ok."); + fflush(stdout); + + nret = sixel_chunk_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("chunk ok."); + fflush(stdout); + + nret = sixel_allocator_tests_main(); + if (nret != EXIT_SUCCESS) { + goto error; + } + + puts("allocator ok."); + fflush(stdout); + +error: + return nret; +} + +#endif + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/tosixel.c b/ThirdParty/libsixel/src/tosixel.c new file mode 100644 index 0000000000..077dfa0c02 --- /dev/null +++ b/ThirdParty/libsixel/src/tosixel.c @@ -0,0 +1,1569 @@ +/* + * this file is derived from "sixel" original version (2014-3-2) + * http://nanno.dip.jp/softlib/man/rlogin/sixel.tar.gz + * + * Initial developer of this file is kmiya@culti. + * + * He distributes it under very permissive license which permits + * useing, copying, modification, redistribution, and all other + * public activities without any restrictions. + * + * He declares this is compatible with MIT/BSD/GPL. + * + * Hayaki Saito (saitoha@me.com) modified this and re-licensed + * it under the MIT license. + * + * Araki Ken added high-color encoding mode(sixel_encode_highcolor) + * extension. + * + */ +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* HAVE_STDLIB_H */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_LIMITS_H +# include +#endif /* HAVE_LIMITS_H */ +#if HAVE_INTTYPES_H +# include +#endif /* HAVE_INTTYPES_H */ + +#include +#include "output.h" +#include "dither.h" + +#define DCS_START_7BIT "\033P" +#define DCS_START_7BIT_SIZE (sizeof(DCS_START_7BIT) - 1) +#define DCS_START_8BIT "\220" +#define DCS_START_8BIT_SIZE (sizeof(DCS_START_8BIT) - 1) +#define DCS_END_7BIT "\033\\" +#define DCS_END_7BIT_SIZE (sizeof(DCS_END_7BIT) - 1) +#define DCS_END_8BIT "\234" +#define DCS_END_8BIT_SIZE (sizeof(DCS_END_8BIT) - 1) +#define DCS_7BIT(x) DCS_START_7BIT x DCS_END_7BIT +#define DCS_8BIT(x) DCS_START_8BIT x DCS_END_8BIT +#define SCREEN_PACKET_SIZE 256 + +enum { + PALETTE_HIT = 1, + PALETTE_CHANGE = 2 +}; + +/* implementation */ + +/* GNU Screen penetration */ +static void +sixel_penetrate( + sixel_output_t /* in */ *output, /* output context */ + int /* in */ nwrite, /* output size */ + char const /* in */ *dcs_start, /* DCS introducer */ + char const /* in */ *dcs_end, /* DCS terminator */ + int const /* in */ dcs_start_size, /* size of DCS introducer */ + int const /* in */ dcs_end_size) /* size of DCS terminator */ +{ + int pos; + int const splitsize = SCREEN_PACKET_SIZE + - dcs_start_size - dcs_end_size; + + for (pos = 0; pos < nwrite; pos += splitsize) { + output->fn_write((char *)dcs_start, dcs_start_size, output->priv); + output->fn_write(((char *)output->buffer) + pos, + nwrite - pos < splitsize ? nwrite - pos: splitsize, + output->priv); + output->fn_write((char *)dcs_end, dcs_end_size, output->priv); + } +} + + +static void +sixel_advance(sixel_output_t *output, int nwrite) +{ + if ((output->pos += nwrite) >= SIXEL_OUTPUT_PACKET_SIZE) { + if (output->penetrate_multiplexer) { + sixel_penetrate(output, + SIXEL_OUTPUT_PACKET_SIZE, + DCS_START_7BIT, + DCS_END_7BIT, + DCS_START_7BIT_SIZE, + DCS_END_7BIT_SIZE); + } else { + output->fn_write((char *)output->buffer, + SIXEL_OUTPUT_PACKET_SIZE, output->priv); + } + memcpy(output->buffer, + output->buffer + SIXEL_OUTPUT_PACKET_SIZE, + (size_t)(output->pos -= SIXEL_OUTPUT_PACKET_SIZE)); + } +} + + +static void +sixel_putc(unsigned char *buffer, unsigned char value) +{ + *buffer = value; +} + + +static void +sixel_puts(unsigned char *buffer, char const *value, int size) +{ + memcpy(buffer, (void *)value, (size_t)size); +} + + +#if HAVE_LDIV +static int +sixel_putnum_impl(char *buffer, long value, int pos) +{ + ldiv_t r; + + r = ldiv(value, 10); + if (r.quot > 0) { + pos = sixel_putnum_impl(buffer, r.quot, pos); + } + *(buffer + pos) = '0' + r.rem; + return pos + 1; +} +#endif /* HAVE_LDIV */ + + +static int +sixel_putnum(char *buffer, int value) +{ + int pos; + +#if HAVE_LDIV + pos = sixel_putnum_impl(buffer, value, 0); +#else + pos = sprintf(buffer, "%d", value); +#endif /* HAVE_LDIV */ + + return pos; +} + + +static SIXELSTATUS +sixel_put_flash(sixel_output_t *const output) +{ + int n; + int nwrite; + + if (output->has_gri_arg_limit) { /* VT240 Max 255 ? */ + while (output->save_count > 255) { + /* argument of DECGRI('!') is limitted to 255 in real VT */ + sixel_puts(output->buffer + output->pos, "!255", 4); + sixel_advance(output, 4); + sixel_putc(output->buffer + output->pos, output->save_pixel); + sixel_advance(output, 1); + output->save_count -= 255; + } + } + + if (output->save_count > 3) { + /* DECGRI Graphics Repeat Introducer ! Pn Ch */ + sixel_putc(output->buffer + output->pos, '!'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, output->save_count); + sixel_advance(output, nwrite); + sixel_putc(output->buffer + output->pos, output->save_pixel); + sixel_advance(output, 1); + } else { + for (n = 0; n < output->save_count; n++) { + output->buffer[output->pos] = output->save_pixel; + sixel_advance(output, 1); + } + } + + output->save_pixel = 0; + output->save_count = 0; + + return 0; +} + + +static SIXELSTATUS +sixel_put_pixel(sixel_output_t *const output, int pix) +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (pix < 0 || pix > '?') { + pix = 0; + } + + pix += '?'; + + if (pix == output->save_pixel) { + output->save_count++; + } else { + status = sixel_put_flash(output); + if (SIXEL_FAILED(status)) { + goto end; + } + output->save_pixel = pix; + output->save_count = 1; + } + + status = SIXEL_OK; + +end: + return status; +} + +static SIXELSTATUS +sixel_node_new(sixel_node_t **np, sixel_allocator_t *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + + *np = (sixel_node_t *)sixel_allocator_malloc(allocator, + sizeof(sixel_node_t)); + if (np == NULL) { + sixel_helper_set_additional_message( + "sixel_node_new: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} + +static void +sixel_node_del(sixel_output_t *output, sixel_node_t *np) +{ + sixel_node_t *tp; + + if ((tp = output->node_top) == np) { + output->node_top = np->next; + } else { + while (tp->next != NULL) { + if (tp->next == np) { + tp->next = np->next; + break; + } + tp = tp->next; + } + } + + np->next = output->node_free; + output->node_free = np; +} + + +static SIXELSTATUS +sixel_put_node( + sixel_output_t /* in */ *output, /* output context */ + int /* in/out */ *x, /* header position */ + sixel_node_t /* in */ *np, /* node object */ + int /* in */ ncolors, /* number of palette colors */ + int /* in */ keycolor) /* transparent color number */ +{ + SIXELSTATUS status = SIXEL_FALSE; + int nwrite; + + if (ncolors != 2 || keycolor == (-1)) { + /* designate palette index */ + if (output->active_palette != np->pal) { + sixel_putc(output->buffer + output->pos, '#'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, np->pal); + sixel_advance(output, nwrite); + output->active_palette = np->pal; + } + } + + for (; *x < np->sx; ++*x) { + if (*x != keycolor) { + status = sixel_put_pixel(output, 0); + if (SIXEL_FAILED(status)) { + goto end; + } + } + } + + for (; *x < np->mx; ++*x) { + if (*x != keycolor) { + status = sixel_put_pixel(output, np->map[*x]); + if (SIXEL_FAILED(status)) { + goto end; + } + } + } + + status = sixel_put_flash(output); + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + return status; +} + + +static SIXELSTATUS +sixel_encode_header(int width, int height, sixel_output_t *output) +{ + SIXELSTATUS status = SIXEL_FALSE; + int nwrite; + int p[3] = {0, 0, 0}; + int pcount = 3; + int use_raster_attributes = 1; + + output->pos = 0; + + if (!output->skip_dcs_envelope) { + if (output->has_8bit_control) { + sixel_puts(output->buffer + output->pos, + DCS_START_8BIT, + DCS_START_8BIT_SIZE); + sixel_advance(output, DCS_START_8BIT_SIZE); + } else { + sixel_puts(output->buffer + output->pos, + DCS_START_7BIT, + DCS_START_7BIT_SIZE); + sixel_advance(output, DCS_START_7BIT_SIZE); + } + } + + if (p[2] == 0) { + pcount--; + if (p[1] == 0) { + pcount--; + if (p[0] == 0) { + pcount--; + } + } + } + + if (pcount > 0) { + nwrite = sixel_putnum((char *)output->buffer + output->pos, p[0]); + sixel_advance(output, nwrite); + if (pcount > 1) { + sixel_putc(output->buffer + output->pos, ';'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, p[1]); + sixel_advance(output, nwrite); + if (pcount > 2) { + sixel_putc(output->buffer + output->pos, ';'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, p[2]); + sixel_advance(output, nwrite); + } + } + } + + sixel_putc(output->buffer + output->pos, 'q'); + sixel_advance(output, 1); + + if (use_raster_attributes) { + sixel_puts(output->buffer + output->pos, "\"1;1;", 5); + sixel_advance(output, 5); + nwrite = sixel_putnum((char *)output->buffer + output->pos, width); + sixel_advance(output, nwrite); + sixel_putc(output->buffer + output->pos, ';'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, height); + sixel_advance(output, nwrite); + } + + status = SIXEL_OK; + + return status; +} + + +static SIXELSTATUS +output_rgb_palette_definition( + sixel_output_t /* in */ *output, + unsigned char /* in */ *palette, + int /* in */ n, + int /* in */ keycolor +) +{ + SIXELSTATUS status = SIXEL_FALSE; + int nwrite; + + if (n != keycolor) { + /* DECGCI Graphics Color Introducer # Pc ; Pu; Px; Py; Pz */ + sixel_putc(output->buffer + output->pos, '#'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, n); + sixel_advance(output, nwrite); + sixel_puts(output->buffer + output->pos, ";2;", 3); + sixel_advance(output, 3); + nwrite = sixel_putnum((char *)output->buffer + output->pos, + (palette[n * 3 + 0] * 100 + 127) / 255); + sixel_advance(output, nwrite); + sixel_putc(output->buffer + output->pos, ';'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, + (palette[n * 3 + 1] * 100 + 127) / 255); + sixel_advance(output, nwrite); + sixel_putc(output->buffer + output->pos, ';'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, + (palette[n * 3 + 2] * 100 + 127) / 255); + sixel_advance(output, nwrite); + } + + status = SIXEL_OK; + + return status; +} + + +static SIXELSTATUS +output_hls_palette_definition( + sixel_output_t /* in */ *output, + unsigned char /* in */ *palette, + int /* in */ n, + int /* in */ keycolor +) +{ + SIXELSTATUS status = SIXEL_FALSE; + int h; + int l; + int s; + int r; + int g; + int b; + int max; + int min; + int nwrite; + + if (n != keycolor) { + r = palette[n * 3 + 0]; + g = palette[n * 3 + 1]; + b = palette[n * 3 + 2]; + max = r > g ? (r > b ? r: b): (g > b ? g: b); + min = r < g ? (r < b ? r: b): (g < b ? g: b); + l = ((max + min) * 100 + 255) / 510; + if (max == min) { + h = s = 0; + } else { + if (l < 50) { + s = ((max - min) * 100) / (max + min); + } else { + s = ((max - min) * 100) / ((255 - max) + (255 - min)); + } + if (r == max) { + h = 120 + (g - b) * 60 / (max - min); + } else if (g == max) { + h = 240 + (b - r) * 60 / (max - min); + } else if (r < g) /* if (b == max) */ { + h = 360 + (r - g) * 60 / (max - min); + } else { + h = 0 + (r - g) * 60 / (max - min); + } + } + /* DECGCI Graphics Color Introducer # Pc ; Pu; Px; Py; Pz */ + sixel_putc(output->buffer + output->pos, '#'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, n); + sixel_advance(output, nwrite); + sixel_puts(output->buffer + output->pos, ";1;", 3); + sixel_advance(output, 3); + nwrite = sixel_putnum((char *)output->buffer + output->pos, h); + sixel_advance(output, nwrite); + sixel_putc(output->buffer + output->pos, ';'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, l); + sixel_advance(output, nwrite); + sixel_putc(output->buffer + output->pos, ';'); + sixel_advance(output, 1); + nwrite = sixel_putnum((char *)output->buffer + output->pos, s); + sixel_advance(output, nwrite); + } + + status = SIXEL_OK; + return status; +} + + +static SIXELSTATUS +sixel_encode_body( + sixel_index_t /* in */ *pixels, + int /* in */ width, + int /* in */ height, + unsigned char /* in */ *palette, + int /* in */ ncolors, + int /* in */ keycolor, + int /* in */ bodyonly, + sixel_output_t /* in */ *output, + unsigned char /* in */ *palstate, + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + int x; + int y; + int i; + int n; + int c; + int sx; + int mx; + int len; + int pix; + char *map = NULL; + int check_integer_overflow; + sixel_node_t *np, *tp, top; + int fillable; + + if (ncolors < 1) { + status = SIXEL_BAD_ARGUMENT; + goto end; + } + len = ncolors * width; + output->active_palette = (-1); + + map = (char *)sixel_allocator_calloc(allocator, + (size_t)len, + sizeof(char)); + if (map == NULL) { + sixel_helper_set_additional_message( + "sixel_encode_body: sixel_allocator_calloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + + if (!bodyonly && (ncolors != 2 || keycolor == (-1))) { + if (output->palette_type == SIXEL_PALETTETYPE_HLS) { + for (n = 0; n < ncolors; n++) { + status = output_hls_palette_definition(output, palette, n, keycolor); + if (SIXEL_FAILED(status)) { + goto end; + } + } + } else { + for (n = 0; n < ncolors; n++) { + status = output_rgb_palette_definition(output, palette, n, keycolor); + if (SIXEL_FAILED(status)) { + goto end; + } + } + } + } + + for (y = i = 0; y < height; y++) { + if (output->encode_policy != SIXEL_ENCODEPOLICY_SIZE) { + fillable = 0; + } else if (palstate) { + /* high color sixel */ + pix = pixels[(y - i) * width]; + if (pix >= ncolors) { + fillable = 0; + } else { + fillable = 1; + } + } else { + /* normal sixel */ + fillable = 1; + } + for (x = 0; x < width; x++) { + if (y > INT_MAX / width) { + /* integer overflow */ + sixel_helper_set_additional_message( + "sixel_encode_body: integer overflow detected." + " (y > INT_MAX)"); + status = SIXEL_BAD_INTEGER_OVERFLOW; + goto end; + } + check_integer_overflow = y * width; + if (check_integer_overflow > INT_MAX - x) { + /* integer overflow */ + sixel_helper_set_additional_message( + "sixel_encode_body: integer overflow detected." + " (y * width > INT_MAX - x)"); + status = SIXEL_BAD_INTEGER_OVERFLOW; + goto end; + } + pix = pixels[check_integer_overflow + x]; /* color index */ + if (pix >= 0 && pix < ncolors && pix != keycolor) { + if (pix > INT_MAX / width) { + /* integer overflow */ + sixel_helper_set_additional_message( + "sixel_encode_body: integer overflow detected." + " (pix > INT_MAX / width)"); + status = SIXEL_BAD_INTEGER_OVERFLOW; + goto end; + } + check_integer_overflow = pix * width; + if (check_integer_overflow > INT_MAX - x) { + /* integer overflow */ + sixel_helper_set_additional_message( + "sixel_encode_body: integer overflow detected." + " (pix * width > INT_MAX - x)"); + status = SIXEL_BAD_INTEGER_OVERFLOW; + goto end; + } + map[pix * width + x] |= (1 << i); + } + else if (!palstate) { + fillable = 0; + } + } + + if (++i < 6 && (y + 1) < height) { + continue; + } + + for (c = 0; c < ncolors; c++) { + for (sx = 0; sx < width; sx++) { + if (*(map + c * width + sx) == 0) { + continue; + } + + for (mx = sx + 1; mx < width; mx++) { + if (*(map + c * width + mx) != 0) { + continue; + } + + for (n = 1; (mx + n) < width; n++) { + if (*(map + c * width + mx + n) != 0) { + break; + } + } + + if (n >= 10 || (mx + n) >= width) { + break; + } + mx = mx + n - 1; + } + + if ((np = output->node_free) != NULL) { + output->node_free = np->next; + } else { + status = sixel_node_new(&np, allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + } + + np->pal = c; + np->sx = sx; + np->mx = mx; + np->map = map + c * width; + + top.next = output->node_top; + tp = ⊤ + + while (tp->next != NULL) { + if (np->sx < tp->next->sx) { + break; + } else if (np->sx == tp->next->sx && np->mx > tp->next->mx) { + break; + } + tp = tp->next; + } + + np->next = tp->next; + tp->next = np; + output->node_top = top.next; + + sx = mx - 1; + } + + } + + if (y != 5) { + /* DECGNL Graphics Next Line */ + output->buffer[output->pos] = '-'; + sixel_advance(output, 1); + } + + for (x = 0; (np = output->node_top) != NULL;) { + sixel_node_t *next; + if (x > np->sx) { + /* DECGCR Graphics Carriage Return */ + output->buffer[output->pos] = '$'; + sixel_advance(output, 1); + x = 0; + } + + if (fillable) { + memset(np->map + np->sx, (1 << i) - 1, (size_t)(np->mx - np->sx)); + } + status = sixel_put_node(output, &x, np, ncolors, keycolor); + if (SIXEL_FAILED(status)) { + goto end; + } + next = np->next; + sixel_node_del(output, np); + np = next; + + while (np != NULL) { + if (np->sx < x) { + np = np->next; + continue; + } + + if (fillable) { + memset(np->map + np->sx, (1 << i) - 1, (size_t)(np->mx - np->sx)); + } + status = sixel_put_node(output, &x, np, ncolors, keycolor); + if (SIXEL_FAILED(status)) { + goto end; + } + next = np->next; + sixel_node_del(output, np); + np = next; + } + + fillable = 0; + } + + i = 0; + memset(map, 0, (size_t)len); + } + + if (palstate) { + output->buffer[output->pos] = '$'; + sixel_advance(output, 1); + } + + status = SIXEL_OK; + +end: + /* free nodes */ + while ((np = output->node_free) != NULL) { + output->node_free = np->next; + sixel_allocator_free(allocator, np); + } + output->node_top = NULL; + + sixel_allocator_free(allocator, map); + + return status; +} + + +static SIXELSTATUS +sixel_encode_footer(sixel_output_t *output) +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (!output->skip_dcs_envelope && !output->penetrate_multiplexer) { + if (output->has_8bit_control) { + sixel_puts(output->buffer + output->pos, + DCS_END_8BIT, DCS_END_8BIT_SIZE); + sixel_advance(output, DCS_END_8BIT_SIZE); + } else { + sixel_puts(output->buffer + output->pos, + DCS_END_7BIT, DCS_END_7BIT_SIZE); + sixel_advance(output, DCS_END_7BIT_SIZE); + } + } + + /* flush buffer */ + if (output->pos > 0) { + if (output->penetrate_multiplexer) { + sixel_penetrate(output, output->pos, + DCS_START_7BIT, + DCS_END_7BIT, + DCS_START_7BIT_SIZE, + DCS_END_7BIT_SIZE); + output->fn_write((char *)DCS_7BIT("\033") DCS_7BIT("\\"), + (DCS_START_7BIT_SIZE + 1 + DCS_END_7BIT_SIZE) * 2, + output->priv); + } else { + output->fn_write((char *)output->buffer, output->pos, output->priv); + } + } + + status = SIXEL_OK; + + return status; +} + + +static SIXELSTATUS +sixel_encode_dither( + unsigned char /* in */ *pixels, /* pixel bytes to be encoded */ + int /* in */ width, /* width of source image */ + int /* in */ height, /* height of source image */ + sixel_dither_t /* in */ *dither, /* dither context */ + sixel_output_t /* in */ *output) /* output context */ +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_index_t *paletted_pixels = NULL; + sixel_index_t *input_pixels; + size_t bufsize; + + switch (dither->pixelformat) { + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + case SIXEL_PIXELFORMAT_G1: + case SIXEL_PIXELFORMAT_G2: + case SIXEL_PIXELFORMAT_G4: + bufsize = (sizeof(sixel_index_t) * (size_t)width * (size_t)height * 3UL); + paletted_pixels = (sixel_index_t *)sixel_allocator_malloc(dither->allocator, bufsize); + if (paletted_pixels == NULL) { + sixel_helper_set_additional_message( + "sixel_encode_dither: sixel_allocator_malloc() failed."); + status = SIXEL_BAD_ALLOCATION; + goto end; + } + status = sixel_helper_normalize_pixelformat(paletted_pixels, + &dither->pixelformat, + pixels, + dither->pixelformat, + width, height); + if (SIXEL_FAILED(status)) { + goto end; + } + input_pixels = paletted_pixels; + break; + case SIXEL_PIXELFORMAT_PAL8: + case SIXEL_PIXELFORMAT_G8: + case SIXEL_PIXELFORMAT_GA88: + case SIXEL_PIXELFORMAT_AG88: + input_pixels = pixels; + break; + default: + /* apply palette */ + paletted_pixels = sixel_dither_apply_palette(dither, pixels, + width, height); + if (paletted_pixels == NULL) { + status = SIXEL_RUNTIME_ERROR; + goto end; + } + input_pixels = paletted_pixels; + break; + } + + status = sixel_encode_header(width, height, output); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = sixel_encode_body(input_pixels, + width, + height, + dither->palette, + dither->ncolors, + dither->keycolor, + dither->bodyonly, + output, + NULL, + dither->allocator); + if (SIXEL_FAILED(status)) { + goto end; + } + + status = sixel_encode_footer(output); + if (SIXEL_FAILED(status)) { + goto end; + } + +end: + sixel_allocator_free(dither->allocator, paletted_pixels); + + return status; +} + +static void +dither_func_none(unsigned char *data, int width) +{ + (void) data; /* unused */ + (void) width; /* unused */ +} + + +static void +dither_func_fs(unsigned char *data, int width) +{ + int r, g, b; + int error_r = data[0] & 0x7; + int error_g = data[1] & 0x7; + int error_b = data[2] & 0x7; + + /* Floyd Steinberg Method + * curr 7/16 + * 3/16 5/48 1/16 + */ + r = (data[3 + 0] + (error_r * 5 >> 4)); + g = (data[3 + 1] + (error_g * 5 >> 4)); + b = (data[3 + 2] + (error_b * 5 >> 4)); + data[3 + 0] = r > 0xff ? 0xff: r; + data[3 + 1] = g > 0xff ? 0xff: g; + data[3 + 2] = b > 0xff ? 0xff: b; + r = data[width * 3 - 3 + 0] + (error_r * 3 >> 4); + g = data[width * 3 - 3 + 1] + (error_g * 3 >> 4); + b = data[width * 3 - 3 + 2] + (error_b * 3 >> 4); + data[width * 3 - 3 + 0] = r > 0xff ? 0xff: r; + data[width * 3 - 3 + 1] = g > 0xff ? 0xff: g; + data[width * 3 - 3 + 2] = b > 0xff ? 0xff: b; + r = data[width * 3 + 0] + (error_r * 5 >> 4); + g = data[width * 3 + 1] + (error_g * 5 >> 4); + b = data[width * 3 + 2] + (error_b * 5 >> 4); + data[width * 3 + 0] = r > 0xff ? 0xff: r; + data[width * 3 + 1] = g > 0xff ? 0xff: g; + data[width * 3 + 2] = b > 0xff ? 0xff: b; +} + + +static void +dither_func_atkinson(unsigned char *data, int width) +{ + int r, g, b; + int error_r = data[0] & 0x7; + int error_g = data[1] & 0x7; + int error_b = data[2] & 0x7; + + error_r += 4; + error_g += 4; + error_b += 4; + + /* Atkinson's Method + * curr 1/8 1/8 + * 1/8 1/8 1/8 + * 1/8 + */ + r = data[(width * 0 + 1) * 3 + 0] + (error_r >> 3); + g = data[(width * 0 + 1) * 3 + 1] + (error_g >> 3); + b = data[(width * 0 + 1) * 3 + 2] + (error_b >> 3); + data[(width * 0 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 0 + 2) * 3 + 0] + (error_r >> 3); + g = data[(width * 0 + 2) * 3 + 1] + (error_g >> 3); + b = data[(width * 0 + 2) * 3 + 2] + (error_b >> 3); + data[(width * 0 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 - 1) * 3 + 0] + (error_r >> 3); + g = data[(width * 1 - 1) * 3 + 1] + (error_g >> 3); + b = data[(width * 1 - 1) * 3 + 2] + (error_b >> 3); + data[(width * 1 - 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 - 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 - 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 0) * 3 + 0] + (error_r >> 3); + g = data[(width * 1 + 0) * 3 + 1] + (error_g >> 3); + b = data[(width * 1 + 0) * 3 + 2] + (error_b >> 3); + data[(width * 1 + 0) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 0) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 0) * 3 + 2] = b > 0xff ? 0xff: b; + r = (data[(width * 1 + 1) * 3 + 0] + (error_r >> 3)); + g = (data[(width * 1 + 1) * 3 + 1] + (error_g >> 3)); + b = (data[(width * 1 + 1) * 3 + 2] + (error_b >> 3)); + data[(width * 1 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = (data[(width * 2 + 0) * 3 + 0] + (error_r >> 3)); + g = (data[(width * 2 + 0) * 3 + 1] + (error_g >> 3)); + b = (data[(width * 2 + 0) * 3 + 2] + (error_b >> 3)); + data[(width * 2 + 0) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 + 0) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 + 0) * 3 + 2] = b > 0xff ? 0xff: b; +} + + +static void +dither_func_jajuni(unsigned char *data, int width) +{ + int r, g, b; + int error_r = data[0] & 0x7; + int error_g = data[1] & 0x7; + int error_b = data[2] & 0x7; + + error_r += 4; + error_g += 4; + error_b += 4; + + /* Jarvis, Judice & Ninke Method + * curr 7/48 5/48 + * 3/48 5/48 7/48 5/48 3/48 + * 1/48 3/48 5/48 3/48 1/48 + */ + r = data[(width * 0 + 1) * 3 + 0] + (error_r * 7 / 48); + g = data[(width * 0 + 1) * 3 + 1] + (error_g * 7 / 48); + b = data[(width * 0 + 1) * 3 + 2] + (error_b * 7 / 48); + data[(width * 0 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 0 + 2) * 3 + 0] + (error_r * 5 / 48); + g = data[(width * 0 + 2) * 3 + 1] + (error_g * 5 / 48); + b = data[(width * 0 + 2) * 3 + 2] + (error_b * 5 / 48); + data[(width * 0 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 - 2) * 3 + 0] + (error_r * 3 / 48); + g = data[(width * 1 - 2) * 3 + 1] + (error_g * 3 / 48); + b = data[(width * 1 - 2) * 3 + 2] + (error_b * 3 / 48); + data[(width * 1 - 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 - 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 - 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 - 1) * 3 + 0] + (error_r * 5 / 48); + g = data[(width * 1 - 1) * 3 + 1] + (error_g * 5 / 48); + b = data[(width * 1 - 1) * 3 + 2] + (error_b * 5 / 48); + data[(width * 1 - 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 - 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 - 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 0) * 3 + 0] + (error_r * 7 / 48); + g = data[(width * 1 + 0) * 3 + 1] + (error_g * 7 / 48); + b = data[(width * 1 + 0) * 3 + 2] + (error_b * 7 / 48); + data[(width * 1 + 0) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 0) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 0) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 1) * 3 + 0] + (error_r * 5 / 48); + g = data[(width * 1 + 1) * 3 + 1] + (error_g * 5 / 48); + b = data[(width * 1 + 1) * 3 + 2] + (error_b * 5 / 48); + data[(width * 1 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 2) * 3 + 0] + (error_r * 3 / 48); + g = data[(width * 1 + 2) * 3 + 1] + (error_g * 3 / 48); + b = data[(width * 1 + 2) * 3 + 2] + (error_b * 3 / 48); + data[(width * 1 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 - 2) * 3 + 0] + (error_r * 1 / 48); + g = data[(width * 2 - 2) * 3 + 1] + (error_g * 1 / 48); + b = data[(width * 2 - 2) * 3 + 2] + (error_b * 1 / 48); + data[(width * 2 - 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 - 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 - 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 - 1) * 3 + 0] + (error_r * 3 / 48); + g = data[(width * 2 - 1) * 3 + 1] + (error_g * 3 / 48); + b = data[(width * 2 - 1) * 3 + 2] + (error_b * 3 / 48); + data[(width * 2 - 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 - 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 - 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 + 0) * 3 + 0] + (error_r * 5 / 48); + g = data[(width * 2 + 0) * 3 + 1] + (error_g * 5 / 48); + b = data[(width * 2 + 0) * 3 + 2] + (error_b * 5 / 48); + data[(width * 2 + 0) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 + 0) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 + 0) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 + 1) * 3 + 0] + (error_r * 3 / 48); + g = data[(width * 2 + 1) * 3 + 1] + (error_g * 3 / 48); + b = data[(width * 2 + 1) * 3 + 2] + (error_b * 3 / 48); + data[(width * 2 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 + 2) * 3 + 0] + (error_r * 1 / 48); + g = data[(width * 2 + 2) * 3 + 1] + (error_g * 1 / 48); + b = data[(width * 2 + 2) * 3 + 2] + (error_b * 1 / 48); + data[(width * 2 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 + 2) * 3 + 2] = b > 0xff ? 0xff: b; +} + + +static void +dither_func_stucki(unsigned char *data, int width) +{ + int r, g, b; + int error_r = data[0] & 0x7; + int error_g = data[1] & 0x7; + int error_b = data[2] & 0x7; + + error_r += 4; + error_g += 4; + error_b += 4; + + /* Stucki's Method + * curr 8/48 4/48 + * 2/48 4/48 8/48 4/48 2/48 + * 1/48 2/48 4/48 2/48 1/48 + */ + r = data[(width * 0 + 1) * 3 + 0] + (error_r * 8 / 48); + g = data[(width * 0 + 1) * 3 + 1] + (error_g * 8 / 48); + b = data[(width * 0 + 1) * 3 + 2] + (error_b * 8 / 48); + data[(width * 0 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 0 + 2) * 3 + 0] + (error_r * 4 / 48); + g = data[(width * 0 + 2) * 3 + 1] + (error_g * 4 / 48); + b = data[(width * 0 + 2) * 3 + 2] + (error_b * 4 / 48); + data[(width * 0 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 - 2) * 3 + 0] + (error_r * 2 / 48); + g = data[(width * 1 - 2) * 3 + 1] + (error_g * 2 / 48); + b = data[(width * 1 - 2) * 3 + 2] + (error_b * 2 / 48); + data[(width * 1 - 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 - 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 - 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 - 1) * 3 + 0] + (error_r * 4 / 48); + g = data[(width * 1 - 1) * 3 + 1] + (error_g * 4 / 48); + b = data[(width * 1 - 1) * 3 + 2] + (error_b * 4 / 48); + data[(width * 1 - 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 - 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 - 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 0) * 3 + 0] + (error_r * 8 / 48); + g = data[(width * 1 + 0) * 3 + 1] + (error_g * 8 / 48); + b = data[(width * 1 + 0) * 3 + 2] + (error_b * 8 / 48); + data[(width * 1 + 0) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 0) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 0) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 1) * 3 + 0] + (error_r * 4 / 48); + g = data[(width * 1 + 1) * 3 + 1] + (error_g * 4 / 48); + b = data[(width * 1 + 1) * 3 + 2] + (error_b * 4 / 48); + data[(width * 1 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 2) * 3 + 0] + (error_r * 2 / 48); + g = data[(width * 1 + 2) * 3 + 1] + (error_g * 2 / 48); + b = data[(width * 1 + 2) * 3 + 2] + (error_b * 2 / 48); + data[(width * 1 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 - 2) * 3 + 0] + (error_r * 1 / 48); + g = data[(width * 2 - 2) * 3 + 1] + (error_g * 1 / 48); + b = data[(width * 2 - 2) * 3 + 2] + (error_b * 1 / 48); + data[(width * 2 - 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 - 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 - 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 - 1) * 3 + 0] + (error_r * 2 / 48); + g = data[(width * 2 - 1) * 3 + 1] + (error_g * 2 / 48); + b = data[(width * 2 - 1) * 3 + 2] + (error_b * 2 / 48); + data[(width * 2 - 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 - 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 - 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 + 0) * 3 + 0] + (error_r * 4 / 48); + g = data[(width * 2 + 0) * 3 + 1] + (error_g * 4 / 48); + b = data[(width * 2 + 0) * 3 + 2] + (error_b * 4 / 48); + data[(width * 2 + 0) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 + 0) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 + 0) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 + 1) * 3 + 0] + (error_r * 2 / 48); + g = data[(width * 2 + 1) * 3 + 1] + (error_g * 2 / 48); + b = data[(width * 2 + 1) * 3 + 2] + (error_b * 2 / 48); + data[(width * 2 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 2 + 2) * 3 + 0] + (error_r * 1 / 48); + g = data[(width * 2 + 2) * 3 + 1] + (error_g * 1 / 48); + b = data[(width * 2 + 2) * 3 + 2] + (error_b * 1 / 48); + data[(width * 2 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 2 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 2 + 2) * 3 + 2] = b > 0xff ? 0xff: b; +} + + +static void +dither_func_burkes(unsigned char *data, int width) +{ + int r, g, b; + int error_r = data[0] & 0x7; + int error_g = data[1] & 0x7; + int error_b = data[2] & 0x7; + + error_r += 2; + error_g += 2; + error_b += 2; + + /* Burkes' Method + * curr 4/16 2/16 + * 1/16 2/16 4/16 2/16 1/16 + */ + r = data[(width * 0 + 1) * 3 + 0] + (error_r * 4 / 16); + g = data[(width * 0 + 1) * 3 + 1] + (error_g * 4 / 16); + b = data[(width * 0 + 1) * 3 + 2] + (error_b * 4 / 16); + data[(width * 0 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 0 + 2) * 3 + 0] + (error_r * 2 / 16); + g = data[(width * 0 + 2) * 3 + 1] + (error_g * 2 / 16); + b = data[(width * 0 + 2) * 3 + 2] + (error_b * 2 / 16); + data[(width * 0 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 0 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 0 + 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 - 2) * 3 + 0] + (error_r * 1 / 16); + g = data[(width * 1 - 2) * 3 + 1] + (error_g * 1 / 16); + b = data[(width * 1 - 2) * 3 + 2] + (error_b * 1 / 16); + data[(width * 1 - 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 - 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 - 2) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 - 1) * 3 + 0] + (error_r * 2 / 16); + g = data[(width * 1 - 1) * 3 + 1] + (error_g * 2 / 16); + b = data[(width * 1 - 1) * 3 + 2] + (error_b * 2 / 16); + data[(width * 1 - 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 - 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 - 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 0) * 3 + 0] + (error_r * 4 / 16); + g = data[(width * 1 + 0) * 3 + 1] + (error_g * 4 / 16); + b = data[(width * 1 + 0) * 3 + 2] + (error_b * 4 / 16); + data[(width * 1 + 0) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 0) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 0) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 1) * 3 + 0] + (error_r * 2 / 16); + g = data[(width * 1 + 1) * 3 + 1] + (error_g * 2 / 16); + b = data[(width * 1 + 1) * 3 + 2] + (error_b * 2 / 16); + data[(width * 1 + 1) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 1) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 1) * 3 + 2] = b > 0xff ? 0xff: b; + r = data[(width * 1 + 2) * 3 + 0] + (error_r * 1 / 16); + g = data[(width * 1 + 2) * 3 + 1] + (error_g * 1 / 16); + b = data[(width * 1 + 2) * 3 + 2] + (error_b * 1 / 16); + data[(width * 1 + 2) * 3 + 0] = r > 0xff ? 0xff: r; + data[(width * 1 + 2) * 3 + 1] = g > 0xff ? 0xff: g; + data[(width * 1 + 2) * 3 + 2] = b > 0xff ? 0xff: b; +} + + +static void +dither_func_a_dither(unsigned char *data, int width, int x, int y) +{ + int c; + float value; + float mask; + + (void) width; /* unused */ + + for (c = 0; c < 3; c ++) { + mask = (((x + c * 17) + y * 236) * 119) & 255; + mask = ((mask - 128) / 256.0f) ; + value = data[c] + mask; + if (value < 0) { + value = 0; + } + value = value > 255 ? 255 : value; + data[c] = value; + } +} + + +static void +dither_func_x_dither(unsigned char *data, int width, int x, int y) +{ + int c; + float value; + float mask; + + (void) width; /* unused */ + + for (c = 0; c < 3; c ++) { + mask = (((x + c * 17) ^ y * 236) * 1234) & 511; + mask = ((mask - 128) / 512.0f) ; + value = data[c] + mask; + if (value < 0) { + value = 0; + } + value = value > 255 ? 255 : value; + data[c] = value; + } +} + + +static void +sixel_apply_15bpp_dither( + unsigned char *pixels, + int x, int y, int width, int height, + int method_for_diffuse) +{ + /* apply floyd steinberg dithering */ + switch (method_for_diffuse) { + case SIXEL_DIFFUSE_FS: + if (x < width - 1 && y < height - 1) { + dither_func_fs(pixels, width); + } + break; + case SIXEL_DIFFUSE_ATKINSON: + if (x < width - 2 && y < height - 2) { + dither_func_atkinson(pixels, width); + } + break; + case SIXEL_DIFFUSE_JAJUNI: + if (x < width - 2 && y < height - 2) { + dither_func_jajuni(pixels, width); + } + break; + case SIXEL_DIFFUSE_STUCKI: + if (x < width - 2 && y < height - 2) { + dither_func_stucki(pixels, width); + } + break; + case SIXEL_DIFFUSE_BURKES: + if (x < width - 2 && y < height - 1) { + dither_func_burkes(pixels, width); + } + break; + case SIXEL_DIFFUSE_A_DITHER: + dither_func_a_dither(pixels, width, x, y); + break; + case SIXEL_DIFFUSE_X_DITHER: + dither_func_x_dither(pixels, width, x, y); + break; + case SIXEL_DIFFUSE_NONE: + default: + dither_func_none(pixels, width); + break; + } +} + + +static SIXELSTATUS +sixel_encode_highcolor( + unsigned char *pixels, int width, int height, + sixel_dither_t *dither, sixel_output_t *output + ) +{ + SIXELSTATUS status = SIXEL_FALSE; + sixel_index_t *paletted_pixels = NULL; + unsigned char *normalized_pixels = NULL; + /* Mark sixel line pixels which have been already drawn. */ + unsigned char *marks; + unsigned char *rgbhit; + unsigned char *rgb2pal; + unsigned char palhitcount[SIXEL_PALETTE_MAX]; + unsigned char palstate[SIXEL_PALETTE_MAX]; + int output_count; + int const maxcolors = 1 << 15; + int whole_size = width * height /* for paletted_pixels */ + + maxcolors /* for rgbhit */ + + maxcolors /* for rgb2pal */ + + width * 6; /* for marks */ + int x, y; + unsigned char *dst; + unsigned char *mptr; + int dirty; + int mod_y; + int nextpal; + int threshold; + int pix; + int orig_height; + unsigned char *pal; + + if (dither->pixelformat != SIXEL_PIXELFORMAT_RGB888) { + /* normalize pixelfromat */ + normalized_pixels = (unsigned char *)sixel_allocator_malloc(dither->allocator, + (size_t)(width * height * 3)); + if (normalized_pixels == NULL) { + goto error; + } + status = sixel_helper_normalize_pixelformat(normalized_pixels, + &dither->pixelformat, + pixels, + dither->pixelformat, + width, height); + if (SIXEL_FAILED(status)) { + goto error; + } + pixels = normalized_pixels; + } + paletted_pixels = (sixel_index_t *)sixel_allocator_malloc(dither->allocator, + (size_t)whole_size); + if (paletted_pixels == NULL) { + goto error; + } + rgbhit = paletted_pixels + width * height; + memset(rgbhit, 0, (size_t)(maxcolors * 2 + width * 6)); + rgb2pal = rgbhit + maxcolors; + marks = rgb2pal + maxcolors; + output_count = 0; + +next: + dst = paletted_pixels; + nextpal = 0; + threshold = 1; + dirty = 0; + mptr = marks; + memset(palstate, 0, sizeof(palstate)); + y = mod_y = 0; + + while (1) { + for (x = 0; x < width; x++, mptr++, dst++, pixels += 3) { + if (*mptr) { + *dst = 255; + } else { + sixel_apply_15bpp_dither(pixels, + x, y, width, height, + dither->method_for_diffuse); + pix = ((pixels[0] & 0xf8) << 7) | + ((pixels[1] & 0xf8) << 2) | + ((pixels[2] >> 3) & 0x1f); + + if (!rgbhit[pix]) { + while (1) { + if (nextpal >= 255) { + if (threshold >= 255) { + break; + } else { + threshold = (threshold == 1) ? 9: 255; + nextpal = 0; + } + } else if (palstate[nextpal] || + palhitcount[nextpal] > threshold) { + nextpal++; + } else { + break; + } + } + + if (nextpal >= 255) { + dirty = 1; + *dst = 255; + } else { + pal = dither->palette + (nextpal * 3); + + rgbhit[pix] = 1; + if (output_count > 0) { + rgbhit[((pal[0] & 0xf8) << 7) | + ((pal[1] & 0xf8) << 2) | + ((pal[2] >> 3) & 0x1f)] = 0; + } + *dst = rgb2pal[pix] = nextpal++; + *mptr = 1; + palstate[*dst] = PALETTE_CHANGE; + palhitcount[*dst] = 1; + *(pal++) = pixels[0]; + *(pal++) = pixels[1]; + *(pal++) = pixels[2]; + } + } else { + *dst = rgb2pal[pix]; + *mptr = 1; + if (!palstate[*dst]) { + palstate[*dst] = PALETTE_HIT; + } + if (palhitcount[*dst] < 255) { + palhitcount[*dst]++; + } + } + } + } + + if (++y >= height) { + if (dirty) { + mod_y = 5; + } else { + goto end; + } + } + if (dirty && (mod_y == 5 || y >= height)) { + orig_height = height; + + if (output_count++ == 0) { + status = sixel_encode_header(width, height, output); + if (SIXEL_FAILED(status)) { + goto error; + } + } + height = y; + status = sixel_encode_body(paletted_pixels, + width, + height, + dither->palette, + 255, + 255, + dither->bodyonly, + output, + palstate, + dither->allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + if (y >= orig_height) { + goto end; + } + pixels -= (6 * width * 3); + height = orig_height - height + 6; + goto next; + } + + if (++mod_y == 6) { + mptr = (unsigned char *)memset(marks, 0, (size_t)(width * 6)); + mod_y = 0; + } + } + + goto next; + +end: + if (output_count == 0) { + status = sixel_encode_header(width, height, output); + if (SIXEL_FAILED(status)) { + goto error; + } + } + status = sixel_encode_body(paletted_pixels, + width, + height, + dither->palette, + 255, + 255, + dither->bodyonly, + output, + palstate, + dither->allocator); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_encode_footer(output); + if (SIXEL_FAILED(status)) { + goto error; + } + +error: + sixel_allocator_free(dither->allocator, paletted_pixels); + sixel_allocator_free(dither->allocator, normalized_pixels); + + return status; +} + + +SIXELAPI SIXELSTATUS +sixel_encode( + unsigned char /* in */ *pixels, /* pixel bytes */ + int /* in */ width, /* image width */ + int /* in */ height, /* image height */ + int const /* in */ depth, /* color depth */ + sixel_dither_t /* in */ *dither, /* dither context */ + sixel_output_t /* in */ *output) /* output context */ +{ + SIXELSTATUS status = SIXEL_FALSE; + + (void) depth; + + /* TODO: reference counting should be thread-safe */ + sixel_dither_ref(dither); + sixel_output_ref(output); + + if (width < 1) { + sixel_helper_set_additional_message( + "sixel_encode: bad width parameter." + " (width < 1)"); + status = SIXEL_BAD_INPUT; + goto end; + } + + if (height < 1) { + sixel_helper_set_additional_message( + "sixel_encode: bad height parameter." + " (height < 1)"); + status = SIXEL_BAD_INPUT; + goto end; + } + + if (dither->quality_mode == SIXEL_QUALITY_HIGHCOLOR) { + status = sixel_encode_highcolor(pixels, width, height, + dither, output); + } else { + status = sixel_encode_dither(pixels, width, height, + dither, output); + } + +end: + sixel_output_unref(output); + sixel_dither_unref(dither); + + return status; +} + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/tty.c b/ThirdParty/libsixel/src/tty.c new file mode 100644 index 0000000000..0d60744028 --- /dev/null +++ b/ThirdParty/libsixel/src/tty.c @@ -0,0 +1,324 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* HAVE_STDLIB_H */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_SYS_TIME_H +# include +#endif /* HAVE_SYS_TIME_H */ +#if HAVE_SYS_TYPES_H +# include +#endif /* HAVE_SYS_TYPES_H */ +#if HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#if HAVE_SYS_UNISTD_H +# include +#endif /* HAVE_SYS_UNISTD_H */ +#if HAVE_SYS_SELECT_H +# include +#endif /* HAVE_SYS_SELECT_H */ +#if HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#if HAVE_TERMIOS_H +# include +#endif /* HAVE_TERMIOS_H */ +#if HAVE_SYS_IOCTL_H +# include +#endif /* HAVE_SYS_IOCTL_H */ + +#include + +#if HAVE_TERMIOS_H && HAVE_SYS_IOCTL_H && HAVE_ISATTY +SIXELSTATUS +sixel_tty_cbreak(struct termios *old_termios, struct termios *new_termios) +{ + SIXELSTATUS status = SIXEL_FALSE; + int ret; + + /* set the terminal to cbreak mode */ + ret = tcgetattr(STDIN_FILENO, old_termios); + if (ret != 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_cbreak: tcgetattr() failed."); + goto end; + } + + (void) memcpy(new_termios, old_termios, sizeof(*old_termios)); + new_termios->c_lflag &= (tcflag_t)~(ECHO | ICANON); + new_termios->c_cc[VMIN] = 1; + new_termios->c_cc[VTIME] = 0; + + ret = tcsetattr(STDIN_FILENO, TCSAFLUSH, new_termios); + if (ret != 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_cbreak: tcsetattr() failed."); + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} +#endif /* HAVE_TERMIOS_H && HAVE_SYS_IOCTL_H && HAVE_ISATTY */ + + +#if HAVE_TERMIOS_H && HAVE_SYS_IOCTL_H && HAVE_ISATTY +SIXELSTATUS +sixel_tty_restore(struct termios *old_termios) +{ + SIXELSTATUS status = SIXEL_FALSE; + int ret; + + ret = tcsetattr(STDIN_FILENO, TCSAFLUSH, old_termios); + if (ret != 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_restore: tcsetattr() failed."); + goto end; + } + + status = SIXEL_OK; + +end: + return status; +} +#endif /* HAVE_TERMIOS_H && HAVE_SYS_IOCTL_H && HAVE_ISATTY */ + + +SIXELSTATUS +sixel_tty_wait_stdin(int usec) +{ +#if HAVE_SYS_SELECT_H + fd_set rfds; + struct timeval tv; + int ret = 0; +#endif /* HAVE_SYS_SELECT_H */ + SIXELSTATUS status = SIXEL_FALSE; + +#if HAVE_SYS_SELECT_H + tv.tv_sec = usec / 1000000; + tv.tv_usec = usec % 1000000; + FD_ZERO(&rfds); + FD_SET(STDIN_FILENO, &rfds); + ret = select(STDIN_FILENO + 1, &rfds, NULL, NULL, &tv); + if (ret < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_wait_stdin: select() failed."); + goto end; + } + + /* success */ + status = SIXEL_OK; +#else + (void) usec; + goto end; +#endif /* HAVE_SYS_SELECT_H */ + +end: + return status; +} + + +SIXELSTATUS +sixel_tty_scroll( + sixel_write_function f_write, + int outfd, + int height, + int is_animation) +{ + SIXELSTATUS status = SIXEL_FALSE; + int nwrite; +#if HAVE_TERMIOS_H && HAVE_SYS_IOCTL_H && HAVE_ISATTY + struct winsize size = {0, 0, 0, 0}; + struct termios old_termios; + struct termios new_termios; + int row = 0; + int col = 0; + int cellheight; + int scroll; + char buffer[256]; + int result; + + /* confirm I/O file descriptors are tty devices */ + if (!isatty(STDIN_FILENO) || !isatty(outfd)) { + /* set cursor position to top-left */ + nwrite = f_write("\033[H", 3, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } + status = SIXEL_OK; + goto end; + } + + /* request terminal size to tty device with TIOCGWINSZ ioctl */ + result = ioctl(outfd, TIOCGWINSZ, &size); + if (result != 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message("ioctl() failed."); + goto end; + } + + /* if we can not retrieve terminal pixel size over TIOCGWINSZ ioctl, + return immediatly */ + if (size.ws_ypixel <= 0) { + nwrite = f_write("\033[H", 3, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } + status = SIXEL_OK; + goto end; + } + + /* if input source is animation and frame No. is more than 1, + output DECSC sequence */ + if (is_animation) { + nwrite = f_write("\0338", 2, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } + status = SIXEL_OK; + goto end; + } + + /* set the terminal to cbreak mode */ + status = sixel_tty_cbreak(&old_termios, &new_termios); + if (SIXEL_FAILED(status)) { + goto end; + } + + /* request cursor position report */ + nwrite = f_write("\033[6n", 4, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } + + /* wait cursor position report */ + if (SIXEL_FAILED(sixel_tty_wait_stdin(1000 * 1000))) { /* wait up to 1 sec */ + /* If we can't get any response from the terminal, + * move cursor to (1, 1). */ + nwrite = f_write("\033[H", 3, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } + status = SIXEL_OK; + goto end; + } + + /* scan cursor position report */ + if (scanf("\033[%d;%dR", &row, &col) != 2) { + nwrite = f_write("\033[H", 3, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } + status = SIXEL_OK; + goto end; + } + + /* restore the terminal mode */ + status = sixel_tty_restore(&old_termios); + if (SIXEL_FAILED(status)) { + goto end; + } + + /* calculate scrolling amount in pixels */ + cellheight = height * size.ws_row / size.ws_ypixel + 1; + scroll = cellheight + row - size.ws_row + 1; + if (scroll > 0) { + nwrite = sprintf(buffer, "\033[%dS\033[%dA", scroll, scroll); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: sprintf() failed."); + } + nwrite = f_write(buffer, (int)strlen(buffer), &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } + } + + /* emit DECSC sequence */ + nwrite = f_write("\0337", 2, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } +#else /* mingw */ + (void) height; + (void) is_animation; + nwrite = f_write("\033[H", 3, &outfd); + if (nwrite < 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message( + "sixel_tty_scroll: f_write() failed."); + goto end; + } +#endif /* HAVE_TERMIOS_H && HAVE_SYS_IOCTL_H && HAVE_ISATTY */ + + status = SIXEL_OK; + +end: + return status; +} + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/tty.h b/ThirdParty/libsixel/src/tty.h new file mode 100644 index 0000000000..37166a16bc --- /dev/null +++ b/ThirdParty/libsixel/src/tty.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_TTY_H +#define LIBSIXEL_TTY_H + +SIXELSTATUS +sixel_tty_wait_stdin(int usec); + +SIXELSTATUS +sixel_tty_scroll( + sixel_write_function f_write, + int outfd, + int height, + int is_animation); + +#endif /* LIBSIXEL_TTY_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/writer.c b/ThirdParty/libsixel/src/writer.c new file mode 100644 index 0000000000..14bab1e590 --- /dev/null +++ b/ThirdParty/libsixel/src/writer.c @@ -0,0 +1,632 @@ +/* + * Copyright (c) 2014-2018 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#if STDC_HEADERS +# include +# include +#endif /* STDC_HEADERS */ +#if HAVE_STRING_H +# include +#endif /* HAVE_STRING_H */ +#if HAVE_SETJMP_H +# include +#endif /* HAVE_SETJMP_H */ +#if HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ +#if HAVE_LIBPNG +# include +#else +# include "stb_image_write.h" +#endif /* HAVE_LIBPNG */ + +#include + +#if !defined(HAVE_MEMCPY) +# define memcpy(d, s, n) (bcopy ((s), (d), (n))) +#endif + +#if !defined(HAVE_MEMMOVE) +# define memmove(d, s, n) (bcopy ((s), (d), (n))) +#endif + +#if !defined(O_BINARY) && defined(_O_BINARY) +# define O_BINARY _O_BINARY +#endif /* !defined(O_BINARY) && !defined(_O_BINARY) */ + + +#if !HAVE_LIBPNG +unsigned char * +stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, + int x, int y, int n, int *out_len); +#endif + +static SIXELSTATUS +write_png_to_file( + unsigned char /* in */ *data, /* source pixel data */ + int /* in */ width, /* source data width */ + int /* in */ height, /* source data height */ + unsigned char /* in */ *palette, /* palette of source data */ + int /* in */ pixelformat, /* source pixelFormat */ + char const /* in */ *filename, /* destination filename */ + sixel_allocator_t /* in */ *allocator) +{ + SIXELSTATUS status = SIXEL_FALSE; + FILE *output_fp = NULL; + unsigned char *pixels = NULL; + unsigned char *new_pixels = NULL; +#if HAVE_LIBPNG + int y; + png_structp png_ptr = NULL; + png_infop info_ptr = NULL; + unsigned char **rows = NULL; +#else + unsigned char *png_data = NULL; + int png_len; + int write_len; +#endif /* HAVE_LIBPNG */ + int i; + unsigned char *src; + unsigned char *dst; + + switch (pixelformat) { + case SIXEL_PIXELFORMAT_PAL1: + case SIXEL_PIXELFORMAT_PAL2: + case SIXEL_PIXELFORMAT_PAL4: + if (palette == NULL) { + status = SIXEL_BAD_ARGUMENT; + sixel_helper_set_additional_message( + "write_png_to_file: no palette is given"); + goto end; + } + new_pixels = sixel_allocator_malloc(allocator, (size_t)(width * height * 4)); + if (new_pixels == NULL) { + status = SIXEL_BAD_ALLOCATION; + sixel_helper_set_additional_message( + "write_png_to_file: sixel_allocator_malloc() failed"); + goto end; + } + src = new_pixels + width * height * 3; + dst = pixels = new_pixels; + status = sixel_helper_normalize_pixelformat(src, + &pixelformat, + data, + pixelformat, + width, height); + if (SIXEL_FAILED(status)) { + goto end; + } + for (i = 0; i < width * height; ++i, ++src) { + *dst++ = *(palette + *src * 3 + 0); + *dst++ = *(palette + *src * 3 + 1); + *dst++ = *(palette + *src * 3 + 2); + } + break; + case SIXEL_PIXELFORMAT_PAL8: + if (palette == NULL) { + status = SIXEL_BAD_ARGUMENT; + sixel_helper_set_additional_message( + "write_png_to_file: no palette is given"); + goto end; + } + src = data; + dst = pixels = new_pixels = sixel_allocator_malloc(allocator, (size_t)(width * height * 3)); + if (new_pixels == NULL) { + status = SIXEL_BAD_ALLOCATION; + sixel_helper_set_additional_message( + "write_png_to_file: sixel_allocator_malloc() failed"); + goto end; + } + for (i = 0; i < width * height; ++i, ++src) { + *dst++ = *(palette + *src * 3 + 0); + *dst++ = *(palette + *src * 3 + 1); + *dst++ = *(palette + *src * 3 + 2); + } + break; + case SIXEL_PIXELFORMAT_RGB888: + pixels = data; + break; + case SIXEL_PIXELFORMAT_G8: + src = data; + dst = pixels = new_pixels + = sixel_allocator_malloc(allocator, (size_t)(width * height * 3)); + if (new_pixels == NULL) { + status = SIXEL_BAD_ALLOCATION; + sixel_helper_set_additional_message( + "write_png_to_file: sixel_allocator_malloc() failed"); + goto end; + } + if (palette) { + for (i = 0; i < width * height; ++i, ++src) { + *dst++ = *(palette + *src * 3 + 0); + *dst++ = *(palette + *src * 3 + 1); + *dst++ = *(palette + *src * 3 + 2); + } + } else { + for (i = 0; i < width * height; ++i, ++src) { + *dst++ = *src; + *dst++ = *src; + *dst++ = *src; + } + } + break; + case SIXEL_PIXELFORMAT_RGB565: + case SIXEL_PIXELFORMAT_RGB555: + case SIXEL_PIXELFORMAT_BGR565: + case SIXEL_PIXELFORMAT_BGR555: + case SIXEL_PIXELFORMAT_GA88: + case SIXEL_PIXELFORMAT_AG88: + case SIXEL_PIXELFORMAT_BGR888: + case SIXEL_PIXELFORMAT_RGBA8888: + case SIXEL_PIXELFORMAT_ARGB8888: + case SIXEL_PIXELFORMAT_BGRA8888: + case SIXEL_PIXELFORMAT_ABGR8888: + pixels = new_pixels = sixel_allocator_malloc(allocator, (size_t)(width * height * 3)); + if (new_pixels == NULL) { + status = SIXEL_BAD_ALLOCATION; + sixel_helper_set_additional_message( + "write_png_to_file: sixel_allocator_malloc() failed"); + goto end; + } + status = sixel_helper_normalize_pixelformat(pixels, + &pixelformat, + data, + pixelformat, + width, height); + if (SIXEL_FAILED(status)) { + goto end; + } + break; + default: + status = SIXEL_BAD_ARGUMENT; + sixel_helper_set_additional_message( + "write_png_to_file: unkown pixelformat is specified"); + goto end; + } + + if (strcmp(filename, "-") == 0) { +#if defined(O_BINARY) +# if HAVE__SETMODE + _setmode(fileno(stdout), O_BINARY); +# elif HAVE_SETMODE + setmode(fileno(stdout), O_BINARY); +# endif /* HAVE_SETMODE */ +#endif /* defined(O_BINARY) */ + output_fp = stdout; + } else { + output_fp = fopen(filename, "wb"); + if (!output_fp) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message("fopen() failed."); + goto end; + } + } + +#if HAVE_LIBPNG + rows = sixel_allocator_malloc(allocator, (size_t)height * sizeof(unsigned char *)); + if (rows == NULL) { + status = SIXEL_BAD_ALLOCATION; + sixel_helper_set_additional_message( + "write_png_to_file: sixel_allocator_malloc() failed"); + goto end; + } + for (y = 0; y < height; ++y) { + rows[y] = pixels + width * 3 * y; + } + png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) { + status = SIXEL_PNG_ERROR; + /* TODO: get error message */ + goto end; + } + info_ptr = png_create_info_struct(png_ptr); + if (!png_ptr) { + status = SIXEL_PNG_ERROR; + /* TODO: get error message */ + goto end; + } +# if USE_SETJMP && HAVE_SETJMP + if (setjmp(png_jmpbuf(png_ptr))) { + status = SIXEL_PNG_ERROR; + /* TODO: get error message */ + goto end; + } +# endif + png_init_io(png_ptr, output_fp); + png_set_IHDR(png_ptr, info_ptr, (png_uint_32)width, (png_uint_32)height, + /* bit_depth */ 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); + png_write_info(png_ptr, info_ptr); + png_write_image(png_ptr, rows); + png_write_end(png_ptr, NULL); +#else + png_data = stbi_write_png_to_mem(pixels, width * 3, + width, height, + /* STBI_rgb */ 3, &png_len); + if (png_data == NULL) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message("stbi_write_png_to_mem() failed."); + goto end; + } + write_len = (int)fwrite(png_data, 1, (size_t)png_len, output_fp); + if (write_len <= 0) { + status = (SIXEL_LIBC_ERROR | (errno & 0xff)); + sixel_helper_set_additional_message("fwrite() failed."); + goto end; + } +#endif /* HAVE_LIBPNG */ + + status = SIXEL_OK; + +end: + if (output_fp && output_fp != stdout) { + fclose(output_fp); + } +#if HAVE_LIBPNG + sixel_allocator_free(allocator, rows); + if (png_ptr) { + png_destroy_write_struct(&png_ptr, &info_ptr); + } +#else + sixel_allocator_free(allocator, png_data); +#endif /* HAVE_LIBPNG */ + sixel_allocator_free(allocator, new_pixels); + + return status; +} + + +SIXELAPI SIXELSTATUS +sixel_helper_write_image_file( + unsigned char /* in */ *data, /* source pixel data */ + int /* in */ width, /* source data width */ + int /* in */ height, /* source data height */ + unsigned char /* in */ *palette, /* palette of source data */ + int /* in */ pixelformat, /* source pixelFormat */ + char const /* in */ *filename, /* destination filename */ + int /* in */ imageformat, /* destination imageformat */ + sixel_allocator_t /* in */ *allocator) /* allocator object */ +{ + SIXELSTATUS status = SIXEL_FALSE; + + if (allocator == NULL) { + status = sixel_allocator_new(&allocator, NULL, NULL, NULL, NULL); + if (SIXEL_FAILED(status)) { + goto end; + } + } else { + sixel_allocator_ref(allocator); + } + + if (width > SIXEL_WIDTH_LIMIT) { + sixel_helper_set_additional_message( + "sixel_encode: bad width parameter." + " (width > SIXEL_WIDTH_LIMIT)"); + status = SIXEL_BAD_INPUT; + goto end; + } + + if (width > SIXEL_HEIGHT_LIMIT) { + sixel_helper_set_additional_message( + "sixel_encode: bad width parameter." + " (width > SIXEL_HEIGHT_LIMIT)"); + status = SIXEL_BAD_INPUT; + goto end; + } + + if (height < 1) { + sixel_helper_set_additional_message( + "sixel_encode: bad height parameter." + " (height < 1)"); + status = SIXEL_BAD_INPUT; + goto end; + } + + if (width < 1) { + sixel_helper_set_additional_message( + "sixel_encode: bad width parameter." + " (width < 1)"); + status = SIXEL_BAD_INPUT; + goto end; + } + + if (height < 1) { + sixel_helper_set_additional_message( + "sixel_encode: bad height parameter." + " (height < 1)"); + status = SIXEL_BAD_INPUT; + goto end; + } + + switch (imageformat) { + case SIXEL_FORMAT_PNG: + status = write_png_to_file(data, width, height, palette, + pixelformat, filename, allocator); + break; + case SIXEL_FORMAT_GIF: + case SIXEL_FORMAT_BMP: + case SIXEL_FORMAT_JPG: + case SIXEL_FORMAT_TGA: + case SIXEL_FORMAT_WBMP: + case SIXEL_FORMAT_TIFF: + case SIXEL_FORMAT_SIXEL: + case SIXEL_FORMAT_PNM: + case SIXEL_FORMAT_GD2: + case SIXEL_FORMAT_PSD: + case SIXEL_FORMAT_HDR: + default: + status = SIXEL_NOT_IMPLEMENTED; + goto end; + break; + } + +end: + sixel_allocator_unref(allocator); + return status; +} + + +#if HAVE_TESTS +static int +test1(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + unsigned char pixels[] = {0xff, 0xff, 0xff}; + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + NULL, + SIXEL_PIXELFORMAT_RGB888, + "output.gif", + SIXEL_FORMAT_GIF, + NULL); + + if (!SIXEL_FAILED(status)) { + goto error; + } + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test2(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + unsigned char pixels[] = {0xff, 0xff, 0xff}; + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + NULL, + SIXEL_PIXELFORMAT_RGB888, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + + if (SIXEL_FAILED(status)) { + goto error; + } + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test3(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + unsigned char pixels[] = {0x00, 0x7f, 0xff}; + sixel_dither_t *dither = sixel_dither_get(SIXEL_BUILTIN_G8); + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + NULL, + SIXEL_PIXELFORMAT_G8, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + sixel_dither_get_palette(dither), + SIXEL_PIXELFORMAT_G8, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + + if (SIXEL_FAILED(status)) { + goto error; + } + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test4(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + unsigned char pixels[] = {0xa0}; + sixel_dither_t *dither = sixel_dither_get(SIXEL_BUILTIN_MONO_DARK); + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + sixel_dither_get_palette(dither), + SIXEL_PIXELFORMAT_PAL1, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + NULL, + SIXEL_PIXELFORMAT_PAL1, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + if (status != SIXEL_BAD_ARGUMENT) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test5(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + unsigned char pixels[] = {0x00}; + sixel_dither_t *dither = sixel_dither_get(SIXEL_BUILTIN_XTERM256); + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + sixel_dither_get_palette(dither), + SIXEL_PIXELFORMAT_PAL8, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + if (SIXEL_FAILED(status)) { + goto error; + } + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + NULL, + SIXEL_PIXELFORMAT_PAL8, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + if (status != SIXEL_BAD_ARGUMENT) { + goto error; + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +static int +test6(void) +{ + int nret = EXIT_FAILURE; + SIXELSTATUS status; + unsigned char pixels[] = {0x00, 0x7f, 0xff}; + + status = sixel_helper_write_image_file( + pixels, + 1, + 1, + NULL, + SIXEL_PIXELFORMAT_BGR888, + "test-output.png", + SIXEL_FORMAT_PNG, + NULL); + + if (SIXEL_FAILED(status)) { + goto error; + } + nret = EXIT_SUCCESS; + +error: + return nret; +} + + +SIXELAPI int +sixel_writer_tests_main(void) +{ + int nret = EXIT_FAILURE; + size_t i; + typedef int (* testcase)(void); + + static testcase const testcases[] = { + test1, + test2, + test3, + test4, + test5, + test6, + }; + + for (i = 0; i < sizeof(testcases) / sizeof(testcase); ++i) { + nret = testcases[i](); + if (nret != EXIT_SUCCESS) { + goto error; + } + } + + nret = EXIT_SUCCESS; + +error: + return nret; +} +#endif /* HAVE_TESTS */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/ThirdParty/libsixel/src/writer.h b/ThirdParty/libsixel/src/writer.h new file mode 100644 index 0000000000..1190be0321 --- /dev/null +++ b/ThirdParty/libsixel/src/writer.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014-2016 Hayaki Saito + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBSIXEL_WRITER_H +#define LIBSIXEL_WRITER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if HAVE_TESTS +int +sixel_writer_tests_main(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSIXEL_WRITER_H */ + +/* emacs Local Variables: */ +/* emacs mode: c */ +/* emacs tab-width: 4 */ +/* emacs indent-tabs-mode: nil */ +/* emacs c-basic-offset: 4 */ +/* emacs End: */ +/* vim: set expandtab ts=4 sts=4 sw=4 : */ +/* EOF */ diff --git a/iTerm2.xcodeproj/project.pbxproj b/iTerm2.xcodeproj/project.pbxproj index cd6f2a2d73..3b34c44900 100644 --- a/iTerm2.xcodeproj/project.pbxproj +++ b/iTerm2.xcodeproj/project.pbxproj @@ -7,6 +7,51 @@ objects = { /* Begin PBXBuildFile section */ + 0580F23324AFB9490099CB8E /* sixel.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1EE24AFB9480099CB8E /* sixel.h */; }; + 0580F23424AFB9490099CB8E /* loader.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1F024AFB9480099CB8E /* loader.c */; }; + 0580F23524AFB9490099CB8E /* allocator.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1F124AFB9480099CB8E /* allocator.c */; }; + 0580F23624AFB9490099CB8E /* fromgif.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1F224AFB9480099CB8E /* fromgif.c */; }; + 0580F23724AFB9490099CB8E /* frompnm.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1F324AFB9480099CB8E /* frompnm.c */; }; + 0580F23824AFB9490099CB8E /* status.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1F424AFB9480099CB8E /* status.h */; }; + 0580F23924AFB9490099CB8E /* writer.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1F524AFB9480099CB8E /* writer.c */; }; + 0580F23A24AFB9490099CB8E /* dither.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1F624AFB9480099CB8E /* dither.h */; }; + 0580F23B24AFB9490099CB8E /* tty.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1F724AFB9480099CB8E /* tty.h */; }; + 0580F23C24AFB9490099CB8E /* rgblookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1F824AFB9480099CB8E /* rgblookup.h */; }; + 0580F23D24AFB9490099CB8E /* stb_image_write.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1F924AFB9480099CB8E /* stb_image_write.h */; }; + 0580F23E24AFB9490099CB8E /* chunk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1FA24AFB9480099CB8E /* chunk.h */; }; + 0580F23F24AFB9490099CB8E /* encoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1FB24AFB9480099CB8E /* encoder.c */; }; + 0580F24024AFB9490099CB8E /* malloc_stub.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1FC24AFB9480099CB8E /* malloc_stub.c */; }; + 0580F24124AFB9490099CB8E /* fromsixel.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1FD24AFB9480099CB8E /* fromsixel.c */; }; + 0580F24224AFB9490099CB8E /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F1FE24AFB9480099CB8E /* quant.h */; }; + 0580F24324AFB9490099CB8E /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 0580F1FF24AFB9480099CB8E /* Makefile */; }; + 0580F24424AFB9490099CB8E /* frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20024AFB9480099CB8E /* frame.h */; }; + 0580F24524AFB9490099CB8E /* decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20124AFB9480099CB8E /* decoder.h */; }; + 0580F24624AFB9490099CB8E /* pixelformat.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F20224AFB9480099CB8E /* pixelformat.c */; }; + 0580F24724AFB9490099CB8E /* output.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20324AFB9480099CB8E /* output.h */; }; + 0580F24824AFB9490099CB8E /* stb_image.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20424AFB9480099CB8E /* stb_image.h */; }; + 0580F24924AFB9490099CB8E /* fromgif.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20624AFB9480099CB8E /* fromgif.h */; }; + 0580F24A24AFB9490099CB8E /* scale.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F20724AFB9480099CB8E /* scale.c */; }; + 0580F24B24AFB9490099CB8E /* loader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20824AFB9480099CB8E /* loader.h */; }; + 0580F24C24AFB9490099CB8E /* allocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20924AFB9480099CB8E /* allocator.h */; }; + 0580F24D24AFB9490099CB8E /* malloc_stub.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20A24AFB9480099CB8E /* malloc_stub.h */; }; + 0580F24E24AFB9490099CB8E /* encoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F20B24AFB9480099CB8E /* encoder.h */; }; + 0580F24F24AFB9490099CB8E /* tests.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F20C24AFB9480099CB8E /* tests.c */; }; + 0580F25024AFB9490099CB8E /* stb_image_write.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F20D24AFB9480099CB8E /* stb_image_write.c */; }; + 0580F25124AFB9490099CB8E /* chunk.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F20E24AFB9480099CB8E /* chunk.c */; }; + 0580F25224AFB9490099CB8E /* dither.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F20F24AFB9480099CB8E /* dither.c */; }; + 0580F25324AFB9490099CB8E /* tty.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F21024AFB9480099CB8E /* tty.c */; }; + 0580F25424AFB9490099CB8E /* frompnm.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F21124AFB9480099CB8E /* frompnm.h */; }; + 0580F25524AFB9490099CB8E /* writer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F21224AFB9480099CB8E /* writer.h */; }; + 0580F25624AFB9490099CB8E /* status.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F21324AFB9480099CB8E /* status.c */; }; + 0580F25724AFB9490099CB8E /* frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F21424AFB9480099CB8E /* frame.c */; }; + 0580F25824AFB9490099CB8E /* decoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F21524AFB9480099CB8E /* decoder.c */; }; + 0580F25924AFB9490099CB8E /* tosixel.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F21724AFB9480099CB8E /* tosixel.c */; }; + 0580F25A24AFB9490099CB8E /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F21824AFB9480099CB8E /* quant.c */; }; + 0580F25B24AFB9490099CB8E /* output.c in Sources */ = {isa = PBXBuildFile; fileRef = 0580F23024AFB9480099CB8E /* output.c */; }; + 0580F25C24AFB9490099CB8E /* pixelformat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F23224AFB9480099CB8E /* pixelformat.h */; }; + 0580F25E24AFB9830099CB8E /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 0580F25D24AFB9830099CB8E /* config.h */; }; + 0580F26224AFC4960099CB8E /* libsixel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0580F1E524AFB9150099CB8E /* libsixel.a */; }; + 0580F26324AFC4B60099CB8E /* libsixel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0580F1E524AFB9150099CB8E /* libsixel.a */; }; 06E0C88E1DF9695400AA061B /* iTermServiceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 06E0C88C1DF9695400AA061B /* iTermServiceProvider.h */; }; 1D027C111CD1867000B0FBFF /* iTermColorPresets.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D027C0F1CD1867000B0FBFF /* iTermColorPresets.h */; }; 1D0318281A42563A00932107 /* iTermImageWell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D0318261A42563A00932107 /* iTermImageWell.h */; }; @@ -2457,8 +2502,6 @@ A67D0D8F1A2EE12A003A8B35 /* TmuxDashboard.xib in Resources */ = {isa = PBXBuildFile; fileRef = A67D0D301A2EE12A003A8B35 /* TmuxDashboard.xib */; }; A67D0D901A2EE12A003A8B35 /* TmuxDashboard.xib in Resources */ = {isa = PBXBuildFile; fileRef = A67D0D301A2EE12A003A8B35 /* TmuxDashboard.xib */; }; A67D0D911A2EE12A003A8B35 /* TmuxDashboard.xib in Resources */ = {isa = PBXBuildFile; fileRef = A67D0D301A2EE12A003A8B35 /* TmuxDashboard.xib */; }; - A67D19502237045C00BD0D4D /* libsixel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67D194E2237045C00BD0D4D /* libsixel.a */; }; - A67D19512237045C00BD0D4D /* libsixel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67D194E2237045C00BD0D4D /* libsixel.a */; }; A67D1953223704C400BD0D4D /* VT100SixelParser.m in Sources */ = {isa = PBXBuildFile; fileRef = A67D1952223704C400BD0D4D /* VT100SixelParser.m */; }; A67D19582237289900BD0D4D /* iTermImage.m in Sources */ = {isa = PBXBuildFile; fileRef = A6755F421D728FFA00F3726C /* iTermImage.m */; }; A67D19792238D50800BD0D4D /* iTermSetFindStringNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = A67D19772238D50800BD0D4D /* iTermSetFindStringNotification.h */; }; @@ -3801,7 +3844,6 @@ A6FD85311B767D6300EB9DCE /* Hamburger@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6FD852F1B767D6300EB9DCE /* Hamburger@2x.png */; }; A6FD85341B768B7800EB9DCE /* BigArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = A6FD85321B768B7800EB9DCE /* BigArrow.png */; }; A6FD85351B768B7800EB9DCE /* BigArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6FD85331B768B7800EB9DCE /* BigArrow@2x.png */; }; - A6FE418A238A026600BBD086 /* libsixel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67D194E2237045C00BD0D4D /* libsixel.a */; }; A6FE8D03209380E400B5C648 /* iTermOptionalComponentDownloadWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = A6FE8D00209380E400B5C648 /* iTermOptionalComponentDownloadWindowController.h */; }; A6FE8D04209380E400B5C648 /* iTermOptionalComponentDownloadWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6FE8D01209380E400B5C648 /* iTermOptionalComponentDownloadWindowController.m */; }; A6FE8D07209382C000B5C648 /* download@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6FE8D05209382C000B5C648 /* download@2x.png */; }; @@ -3853,6 +3895,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 0580F26424AFC4B60099CB8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0464AB0C006CD2EC7F000001 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0580F1E424AFB9150099CB8E; + remoteInfo = sixel; + }; 1D6ED85419AEA20D005A7799 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0464AB0C006CD2EC7F000001 /* Project object */; @@ -4021,6 +4070,75 @@ /* Begin PBXFileReference section */ 0464AB2F006CD2EC7F000001 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 0580F1E524AFB9150099CB8E /* libsixel.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libsixel.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 0580F1EE24AFB9480099CB8E /* sixel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sixel.h; sourceTree = ""; }; + 0580F1F024AFB9480099CB8E /* loader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = loader.c; sourceTree = ""; }; + 0580F1F124AFB9480099CB8E /* allocator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = allocator.c; sourceTree = ""; }; + 0580F1F224AFB9480099CB8E /* fromgif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fromgif.c; sourceTree = ""; }; + 0580F1F324AFB9480099CB8E /* frompnm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frompnm.c; sourceTree = ""; }; + 0580F1F424AFB9480099CB8E /* status.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = status.h; sourceTree = ""; }; + 0580F1F524AFB9480099CB8E /* writer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = writer.c; sourceTree = ""; }; + 0580F1F624AFB9480099CB8E /* dither.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dither.h; sourceTree = ""; }; + 0580F1F724AFB9480099CB8E /* tty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tty.h; sourceTree = ""; }; + 0580F1F824AFB9480099CB8E /* rgblookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rgblookup.h; sourceTree = ""; }; + 0580F1F924AFB9480099CB8E /* stb_image_write.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stb_image_write.h; sourceTree = ""; }; + 0580F1FA24AFB9480099CB8E /* chunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chunk.h; sourceTree = ""; }; + 0580F1FB24AFB9480099CB8E /* encoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = encoder.c; sourceTree = ""; }; + 0580F1FC24AFB9480099CB8E /* malloc_stub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = malloc_stub.c; sourceTree = ""; }; + 0580F1FD24AFB9480099CB8E /* fromsixel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fromsixel.c; sourceTree = ""; }; + 0580F1FE24AFB9480099CB8E /* quant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quant.h; sourceTree = ""; }; + 0580F1FF24AFB9480099CB8E /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + 0580F20024AFB9480099CB8E /* frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frame.h; sourceTree = ""; }; + 0580F20124AFB9480099CB8E /* decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoder.h; sourceTree = ""; }; + 0580F20224AFB9480099CB8E /* pixelformat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pixelformat.c; sourceTree = ""; }; + 0580F20324AFB9480099CB8E /* output.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = output.h; sourceTree = ""; }; + 0580F20424AFB9480099CB8E /* stb_image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stb_image.h; sourceTree = ""; }; + 0580F20524AFB9480099CB8E /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; + 0580F20624AFB9480099CB8E /* fromgif.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fromgif.h; sourceTree = ""; }; + 0580F20724AFB9480099CB8E /* scale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = scale.c; sourceTree = ""; }; + 0580F20824AFB9480099CB8E /* loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loader.h; sourceTree = ""; }; + 0580F20924AFB9480099CB8E /* allocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = allocator.h; sourceTree = ""; }; + 0580F20A24AFB9480099CB8E /* malloc_stub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = malloc_stub.h; sourceTree = ""; }; + 0580F20B24AFB9480099CB8E /* encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = encoder.h; sourceTree = ""; }; + 0580F20C24AFB9480099CB8E /* tests.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tests.c; sourceTree = ""; }; + 0580F20D24AFB9480099CB8E /* stb_image_write.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stb_image_write.c; sourceTree = ""; }; + 0580F20E24AFB9480099CB8E /* chunk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = chunk.c; sourceTree = ""; }; + 0580F20F24AFB9480099CB8E /* dither.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dither.c; sourceTree = ""; }; + 0580F21024AFB9480099CB8E /* tty.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tty.c; sourceTree = ""; }; + 0580F21124AFB9480099CB8E /* frompnm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frompnm.h; sourceTree = ""; }; + 0580F21224AFB9480099CB8E /* writer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = writer.h; sourceTree = ""; }; + 0580F21324AFB9480099CB8E /* status.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = status.c; sourceTree = ""; }; + 0580F21424AFB9480099CB8E /* frame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frame.c; sourceTree = ""; }; + 0580F21524AFB9480099CB8E /* decoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = decoder.c; sourceTree = ""; }; + 0580F21624AFB9480099CB8E /* sixel.5 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sixel.5; sourceTree = ""; }; + 0580F21724AFB9480099CB8E /* tosixel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tosixel.c; sourceTree = ""; }; + 0580F21824AFB9480099CB8E /* quant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quant.c; sourceTree = ""; }; + 0580F21A24AFB9480099CB8E /* libsixel_la-pixelformat.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-pixelformat.Plo"; sourceTree = ""; }; + 0580F21B24AFB9480099CB8E /* libsixel_la-tty.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-tty.Plo"; sourceTree = ""; }; + 0580F21C24AFB9480099CB8E /* tests-tests.Po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "tests-tests.Po"; sourceTree = ""; }; + 0580F21D24AFB9480099CB8E /* libsixel_la-status.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-status.Plo"; sourceTree = ""; }; + 0580F21E24AFB9480099CB8E /* libsixel_la-output.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-output.Plo"; sourceTree = ""; }; + 0580F21F24AFB9480099CB8E /* libsixel_la-encoder.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-encoder.Plo"; sourceTree = ""; }; + 0580F22024AFB9480099CB8E /* libsixel_la-frame.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-frame.Plo"; sourceTree = ""; }; + 0580F22124AFB9480099CB8E /* libsixel_la-chunk.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-chunk.Plo"; sourceTree = ""; }; + 0580F22224AFB9480099CB8E /* libsixel_la-quant.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-quant.Plo"; sourceTree = ""; }; + 0580F22324AFB9480099CB8E /* libsixel_la-decoder.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-decoder.Plo"; sourceTree = ""; }; + 0580F22424AFB9480099CB8E /* libsixel_la-loader.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-loader.Plo"; sourceTree = ""; }; + 0580F22524AFB9480099CB8E /* libsixel_la-fromsixel.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-fromsixel.Plo"; sourceTree = ""; }; + 0580F22624AFB9480099CB8E /* libsixel_la-tosixel.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-tosixel.Plo"; sourceTree = ""; }; + 0580F22724AFB9480099CB8E /* libsixel_la-writer.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-writer.Plo"; sourceTree = ""; }; + 0580F22824AFB9480099CB8E /* libsixel_la-frompnm.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-frompnm.Plo"; sourceTree = ""; }; + 0580F22924AFB9480099CB8E /* libsixel_la-stb_image_write.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-stb_image_write.Plo"; sourceTree = ""; }; + 0580F22A24AFB9480099CB8E /* libsixel_la-malloc_stub.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-malloc_stub.Plo"; sourceTree = ""; }; + 0580F22B24AFB9480099CB8E /* libsixel_la-dither.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-dither.Plo"; sourceTree = ""; }; + 0580F22C24AFB9480099CB8E /* libsixel_la-allocator.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-allocator.Plo"; sourceTree = ""; }; + 0580F22D24AFB9480099CB8E /* libsixel_la-scale.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-scale.Plo"; sourceTree = ""; }; + 0580F22E24AFB9480099CB8E /* libsixel_la-fromgif.Plo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "libsixel_la-fromgif.Plo"; sourceTree = ""; }; + 0580F22F24AFB9480099CB8E /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 0580F23024AFB9480099CB8E /* output.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = output.c; sourceTree = ""; }; + 0580F23124AFB9480099CB8E /* rgblookup.gperf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rgblookup.gperf; sourceTree = ""; }; + 0580F23224AFB9480099CB8E /* pixelformat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pixelformat.h; sourceTree = ""; }; + 0580F25D24AFB9830099CB8E /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = libsixel/config.h; sourceTree = ""; }; 06E0C88C1DF9695400AA061B /* iTermServiceProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTermServiceProvider.h; sourceTree = ""; }; 06E0C88D1DF9695400AA061B /* iTermServiceProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTermServiceProvider.m; sourceTree = ""; }; 1D027C0F1CD1867000B0FBFF /* iTermColorPresets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTermColorPresets.h; sourceTree = ""; }; @@ -5615,7 +5733,6 @@ A67D0D2E1A2EE12A003A8B35 /* PseudoTerminal.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = PseudoTerminal.xib; path = Interfaces/PseudoTerminal.xib; sourceTree = ""; }; A67D0D2F1A2EE12A003A8B35 /* SplitPanel.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = SplitPanel.xib; path = Interfaces/SplitPanel.xib; sourceTree = ""; }; A67D0D301A2EE12A003A8B35 /* TmuxDashboard.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = TmuxDashboard.xib; path = Interfaces/TmuxDashboard.xib; sourceTree = ""; }; - A67D194E2237045C00BD0D4D /* libsixel.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsixel.a; path = ThirdParty/libsixel/lib/libsixel.a; sourceTree = ""; }; A67D1952223704C400BD0D4D /* VT100SixelParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VT100SixelParser.m; sourceTree = ""; }; A67D19772238D50800BD0D4D /* iTermSetFindStringNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iTermSetFindStringNotification.h; sourceTree = ""; }; A67D19782238D50800BD0D4D /* iTermSetFindStringNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iTermSetFindStringNotification.m; sourceTree = ""; }; @@ -6573,6 +6690,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 0580F1E324AFB9150099CB8E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 1D6EDAF419AEA20D005A7799 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6583,7 +6707,6 @@ A624231919CF6DE000182C08 /* NMSSH.framework in Frameworks */, A624231219CF6B0C00182C08 /* Sparkle.framework in Frameworks */, 530AB89B20AFF21300D2AA08 /* CoreParse.framework in Frameworks */, - A67D19512237045C00BD0D4D /* libsixel.a in Frameworks */, 1D6EDAF519AEA20D005A7799 /* Security.framework in Frameworks */, 1D6EDAF819AEA20D005A7799 /* ScriptingBridge.framework in Frameworks */, A6184F8B1BAB3ED70088EF3C /* ColorPicker.framework in Frameworks */, @@ -6600,7 +6723,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A67D19502237045C00BD0D4D /* libsixel.a in Frameworks */, A66719691DCE3965000CE608 /* libiTerm2SharedARC.a in Frameworks */, A666130F225CFF7200840E89 /* BetterFontPicker.framework in Frameworks */, A690F7051B424F15009F76D8 /* OpenDirectory.framework in Frameworks */, @@ -6634,6 +6756,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 0580F26224AFC4960099CB8E /* libsixel.a in Frameworks */, A666130D225CFF6900840E89 /* BetterFontPicker.framework in Frameworks */, A6FB633123DE7DEC00026D52 /* SearchableComboListView.framework in Frameworks */, A60BD9191B3F5D76007D7F11 /* OpenDirectory.framework in Frameworks */, @@ -6671,8 +6794,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A6FE418A238A026600BBD086 /* libsixel.a in Frameworks */, A656AE4C1DBBE1CE00CE8448 /* libaprutil-1.tbd in Frameworks */, + 0580F26324AFC4B60099CB8E /* libsixel.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7176,10 +7299,111 @@ A667195C1DCE36C3000CE608 /* libiTerm2SharedARC.a */, A6866B6723CAA10A00ACD94C /* pidinfo.xpc */, A663197822FF349700C502BD /* iTermServer */, + 0580F1E524AFB9150099CB8E /* libsixel.a */, ); name = Products; sourceTree = ""; }; + 0580F1E024AFB8BB0099CB8E /* libsixel */ = { + isa = PBXGroup; + children = ( + 0580F1ED24AFB9480099CB8E /* include */, + 0580F1EF24AFB9480099CB8E /* src */, + ); + name = libsixel; + sourceTree = ""; + }; + 0580F1ED24AFB9480099CB8E /* include */ = { + isa = PBXGroup; + children = ( + 0580F1EE24AFB9480099CB8E /* sixel.h */, + ); + name = include; + path = libsixel/include; + sourceTree = ""; + }; + 0580F1EF24AFB9480099CB8E /* src */ = { + isa = PBXGroup; + children = ( + 0580F1F024AFB9480099CB8E /* loader.c */, + 0580F1F124AFB9480099CB8E /* allocator.c */, + 0580F1F224AFB9480099CB8E /* fromgif.c */, + 0580F1F324AFB9480099CB8E /* frompnm.c */, + 0580F1F424AFB9480099CB8E /* status.h */, + 0580F1F524AFB9480099CB8E /* writer.c */, + 0580F1F624AFB9480099CB8E /* dither.h */, + 0580F1F724AFB9480099CB8E /* tty.h */, + 0580F1F824AFB9480099CB8E /* rgblookup.h */, + 0580F1F924AFB9480099CB8E /* stb_image_write.h */, + 0580F1FA24AFB9480099CB8E /* chunk.h */, + 0580F1FB24AFB9480099CB8E /* encoder.c */, + 0580F1FC24AFB9480099CB8E /* malloc_stub.c */, + 0580F1FD24AFB9480099CB8E /* fromsixel.c */, + 0580F1FE24AFB9480099CB8E /* quant.h */, + 0580F1FF24AFB9480099CB8E /* Makefile */, + 0580F20024AFB9480099CB8E /* frame.h */, + 0580F20124AFB9480099CB8E /* decoder.h */, + 0580F20224AFB9480099CB8E /* pixelformat.c */, + 0580F20324AFB9480099CB8E /* output.h */, + 0580F20424AFB9480099CB8E /* stb_image.h */, + 0580F20524AFB9480099CB8E /* Makefile.am */, + 0580F20624AFB9480099CB8E /* fromgif.h */, + 0580F20724AFB9480099CB8E /* scale.c */, + 0580F20824AFB9480099CB8E /* loader.h */, + 0580F20924AFB9480099CB8E /* allocator.h */, + 0580F20A24AFB9480099CB8E /* malloc_stub.h */, + 0580F20B24AFB9480099CB8E /* encoder.h */, + 0580F20C24AFB9480099CB8E /* tests.c */, + 0580F20D24AFB9480099CB8E /* stb_image_write.c */, + 0580F20E24AFB9480099CB8E /* chunk.c */, + 0580F20F24AFB9480099CB8E /* dither.c */, + 0580F21024AFB9480099CB8E /* tty.c */, + 0580F21124AFB9480099CB8E /* frompnm.h */, + 0580F21224AFB9480099CB8E /* writer.h */, + 0580F21324AFB9480099CB8E /* status.c */, + 0580F21424AFB9480099CB8E /* frame.c */, + 0580F21524AFB9480099CB8E /* decoder.c */, + 0580F21624AFB9480099CB8E /* sixel.5 */, + 0580F21724AFB9480099CB8E /* tosixel.c */, + 0580F21824AFB9480099CB8E /* quant.c */, + 0580F21924AFB9480099CB8E /* .deps */, + 0580F22F24AFB9480099CB8E /* Makefile.in */, + 0580F23024AFB9480099CB8E /* output.c */, + 0580F23124AFB9480099CB8E /* rgblookup.gperf */, + 0580F23224AFB9480099CB8E /* pixelformat.h */, + ); + name = src; + path = libsixel/src; + sourceTree = ""; + }; + 0580F21924AFB9480099CB8E /* .deps */ = { + isa = PBXGroup; + children = ( + 0580F21A24AFB9480099CB8E /* libsixel_la-pixelformat.Plo */, + 0580F21B24AFB9480099CB8E /* libsixel_la-tty.Plo */, + 0580F21C24AFB9480099CB8E /* tests-tests.Po */, + 0580F21D24AFB9480099CB8E /* libsixel_la-status.Plo */, + 0580F21E24AFB9480099CB8E /* libsixel_la-output.Plo */, + 0580F21F24AFB9480099CB8E /* libsixel_la-encoder.Plo */, + 0580F22024AFB9480099CB8E /* libsixel_la-frame.Plo */, + 0580F22124AFB9480099CB8E /* libsixel_la-chunk.Plo */, + 0580F22224AFB9480099CB8E /* libsixel_la-quant.Plo */, + 0580F22324AFB9480099CB8E /* libsixel_la-decoder.Plo */, + 0580F22424AFB9480099CB8E /* libsixel_la-loader.Plo */, + 0580F22524AFB9480099CB8E /* libsixel_la-fromsixel.Plo */, + 0580F22624AFB9480099CB8E /* libsixel_la-tosixel.Plo */, + 0580F22724AFB9480099CB8E /* libsixel_la-writer.Plo */, + 0580F22824AFB9480099CB8E /* libsixel_la-frompnm.Plo */, + 0580F22924AFB9480099CB8E /* libsixel_la-stb_image_write.Plo */, + 0580F22A24AFB9480099CB8E /* libsixel_la-malloc_stub.Plo */, + 0580F22B24AFB9480099CB8E /* libsixel_la-dither.Plo */, + 0580F22C24AFB9480099CB8E /* libsixel_la-allocator.Plo */, + 0580F22D24AFB9480099CB8E /* libsixel_la-scale.Plo */, + 0580F22E24AFB9480099CB8E /* libsixel_la-fromgif.Plo */, + ); + path = .deps; + sourceTree = ""; + }; 06E0C88B1DF9691200AA061B /* Services */ = { isa = PBXGroup; children = ( @@ -7192,6 +7416,8 @@ 1D03D42519144B8E0049EB8F /* ThirdParty */ = { isa = PBXGroup; children = ( + 0580F1E024AFB8BB0099CB8E /* libsixel */, + 0580F25D24AFB9830099CB8E /* config.h */, A6EB203F223EC53F00E928C3 /* ini */, A6A7A94D214393F1000DA2D4 /* hyper-tab-icons-plus */, A69CCB13211BC284008ADA71 /* GZIP */, @@ -7849,7 +8075,6 @@ A60EAE7C23F9CEB3007536CE /* ApplicationServices.framework */, A6FB633023DE7DEB00026D52 /* SearchableComboListView.framework */, A6661309225CFF5A00840E89 /* BetterFontPicker.framework */, - A67D194E2237045C00BD0D4D /* libsixel.a */, A608CCF2214DE6E8007A7B87 /* XCTest.framework */, 530AB89820AFF21200D2AA08 /* CoreParse.framework */, A6588821201708D8006F48DB /* IOKit.framework */, @@ -10083,6 +10308,34 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 0580F1E124AFB9150099CB8E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0580F24424AFB9490099CB8E /* frame.h in Headers */, + 0580F24724AFB9490099CB8E /* output.h in Headers */, + 0580F25C24AFB9490099CB8E /* pixelformat.h in Headers */, + 0580F23B24AFB9490099CB8E /* tty.h in Headers */, + 0580F23C24AFB9490099CB8E /* rgblookup.h in Headers */, + 0580F23824AFB9490099CB8E /* status.h in Headers */, + 0580F24B24AFB9490099CB8E /* loader.h in Headers */, + 0580F23324AFB9490099CB8E /* sixel.h in Headers */, + 0580F24C24AFB9490099CB8E /* allocator.h in Headers */, + 0580F24D24AFB9490099CB8E /* malloc_stub.h in Headers */, + 0580F24524AFB9490099CB8E /* decoder.h in Headers */, + 0580F24E24AFB9490099CB8E /* encoder.h in Headers */, + 0580F23D24AFB9490099CB8E /* stb_image_write.h in Headers */, + 0580F24824AFB9490099CB8E /* stb_image.h in Headers */, + 0580F24924AFB9490099CB8E /* fromgif.h in Headers */, + 0580F25424AFB9490099CB8E /* frompnm.h in Headers */, + 0580F23A24AFB9490099CB8E /* dither.h in Headers */, + 0580F24224AFB9490099CB8E /* quant.h in Headers */, + 0580F23E24AFB9490099CB8E /* chunk.h in Headers */, + 0580F25524AFB9490099CB8E /* writer.h in Headers */, + 0580F25E24AFB9830099CB8E /* config.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 1D6ED85519AEA20D005A7799 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -11374,6 +11627,23 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 0580F1E424AFB9150099CB8E /* sixel */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0580F1E624AFB9150099CB8E /* Build configuration list for PBXNativeTarget "sixel" */; + buildPhases = ( + 0580F1E124AFB9150099CB8E /* Headers */, + 0580F1E224AFB9150099CB8E /* Sources */, + 0580F1E324AFB9150099CB8E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = sixel; + productName = sixel; + productReference = 0580F1E524AFB9150099CB8E /* libsixel.a */; + productType = "com.apple.product-type.library.static"; + }; 1D6ED85219AEA20D005A7799 /* iTerm2ForApplescriptTesting */ = { isa = PBXNativeTarget; buildConfigurationList = 1D6EDB0519AEA20D005A7799 /* Build configuration list for PBXNativeTarget "iTerm2ForApplescriptTesting" */; @@ -11507,6 +11777,7 @@ buildRules = ( ); dependencies = ( + 0580F26524AFC4B60099CB8E /* PBXTargetDependency */, ); name = image_decoder; productName = image_decoder; @@ -11574,6 +11845,10 @@ attributes = { LastUpgradeCheck = 1150; TargetAttributes = { + 0580F1E424AFB9150099CB8E = { + CreatedOnToolsVersion = 12.0; + ProvisioningStyle = Automatic; + }; 1D6ED85219AEA20D005A7799 = { DevelopmentTeam = H7V7XYVQ7D; }; @@ -11584,7 +11859,7 @@ DevelopmentTeam = H7V7XYVQ7D; }; 874206460564169600CFC3F1 = { - ProvisioningStyle = Manual; + ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.HardenedRuntime = { enabled = 1; @@ -11593,14 +11868,17 @@ }; A663197722FF349700C502BD = { CreatedOnToolsVersion = 10.2; - ProvisioningStyle = Manual; + ProvisioningStyle = Automatic; }; A66717851DCE36C3000CE608 = { DevelopmentTeam = H7V7XYVQ7D; }; + A6755F481D729A0500F3726C = { + ProvisioningStyle = Automatic; + }; A6866B6623CAA10A00ACD94C = { CreatedOnToolsVersion = 11.3; - ProvisioningStyle = Manual; + ProvisioningStyle = Automatic; }; A6C7603F1B45C4CF00E3C992 = { DevelopmentTeam = H7V7XYVQ7D; @@ -11639,6 +11917,7 @@ A66717851DCE36C3000CE608 /* iTerm2SharedARC */, A6866B6623CAA10A00ACD94C /* pidinfo */, A663197722FF349700C502BD /* iTermServer */, + 0580F1E424AFB9150099CB8E /* sixel */, ); }; /* End PBXProject section */ @@ -13325,6 +13604,35 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 0580F1E224AFB9150099CB8E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0580F24324AFB9490099CB8E /* Makefile in Sources */, + 0580F23424AFB9490099CB8E /* loader.c in Sources */, + 0580F25924AFB9490099CB8E /* tosixel.c in Sources */, + 0580F23724AFB9490099CB8E /* frompnm.c in Sources */, + 0580F25724AFB9490099CB8E /* frame.c in Sources */, + 0580F24F24AFB9490099CB8E /* tests.c in Sources */, + 0580F25024AFB9490099CB8E /* stb_image_write.c in Sources */, + 0580F25124AFB9490099CB8E /* chunk.c in Sources */, + 0580F25824AFB9490099CB8E /* decoder.c in Sources */, + 0580F23F24AFB9490099CB8E /* encoder.c in Sources */, + 0580F25324AFB9490099CB8E /* tty.c in Sources */, + 0580F24A24AFB9490099CB8E /* scale.c in Sources */, + 0580F25A24AFB9490099CB8E /* quant.c in Sources */, + 0580F23524AFB9490099CB8E /* allocator.c in Sources */, + 0580F25B24AFB9490099CB8E /* output.c in Sources */, + 0580F23924AFB9490099CB8E /* writer.c in Sources */, + 0580F24124AFB9490099CB8E /* fromsixel.c in Sources */, + 0580F24624AFB9490099CB8E /* pixelformat.c in Sources */, + 0580F25624AFB9490099CB8E /* status.c in Sources */, + 0580F24024AFB9490099CB8E /* malloc_stub.c in Sources */, + 0580F25224AFB9490099CB8E /* dither.c in Sources */, + 0580F23624AFB9490099CB8E /* fromgif.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 1D6ED9ED19AEA20D005A7799 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -14311,6 +14619,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 0580F26524AFC4B60099CB8E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0580F1E424AFB9150099CB8E /* sixel */; + targetProxy = 0580F26424AFC4B60099CB8E /* PBXContainerItemProxy */; + }; 1D6ED85319AEA20D005A7799 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 1DFA7C661923E83500DF1410 /* SSKeychain */; @@ -14393,6 +14706,237 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 0580F1E724AFB9150099CB8E /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Development; + }; + 0580F1E824AFB9150099CB8E /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Deployment; + }; + 0580F1E924AFB9150099CB8E /* Beta */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Beta; + }; + 0580F1EA24AFB9150099CB8E /* Nightly */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + EXECUTABLE_PREFIX = lib; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Nightly; + }; 1809E7B01665E2CB0069C439 /* Nightly */ = { isa = XCBuildConfiguration; buildSettings = { @@ -14430,7 +14974,6 @@ GCC_WARN_UNUSED_FUNCTION = YES; MACOSX_DEPLOYMENT_TARGET = 10.12; SDKROOT = macosx; - VALID_ARCHS = "i386 x86_64"; WARNING_CFLAGS = "-Wall"; }; name = Nightly; @@ -14438,13 +14981,12 @@ 1809E7B11665E2CB0069C439 /* Nightly */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_INT_CONVERSION = YES; CODE_SIGN_ENTITLEMENTS = iTerm2.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; DEVELOPMENT_TEAM = ""; @@ -14499,7 +15041,6 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; USE_HEADERMAP = NO; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -14573,7 +15114,6 @@ PRODUCT_NAME = iTerm2ForApplescriptTesting; SDKROOT = macosx; SECTORDER_FLAGS = ""; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -14641,7 +15181,6 @@ PRODUCT_BUNDLE_IDENTIFIER = com.googlecode.iterm2.applescript; PRODUCT_NAME = iTerm2ForApplescriptTesting; SDKROOT = macosx; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -14708,7 +15247,6 @@ PRODUCT_BUNDLE_IDENTIFIER = com.googlecode.iterm2.applescript; PRODUCT_NAME = iTerm2ForApplescriptTesting; SDKROOT = macosx; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -14862,7 +15400,6 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.google.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wall", "-Wno-shorten-64-to-32", @@ -14935,7 +15472,6 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.google.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wall", "-Wno-shorten-64-to-32", @@ -15105,7 +15641,6 @@ GCC_WARN_UNUSED_FUNCTION = YES; MACOSX_DEPLOYMENT_TARGET = 10.12; SDKROOT = macosx; - VALID_ARCHS = "x86_64 i386"; WARNING_CFLAGS = "-Wall"; }; name = Beta; @@ -15113,13 +15648,12 @@ A656E9891F970C7200158128 /* Beta */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_INT_CONVERSION = YES; CODE_SIGN_ENTITLEMENTS = iTerm2.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; DEVELOPMENT_TEAM = ""; @@ -15170,7 +15704,6 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; USE_HEADERMAP = NO; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -15247,7 +15780,6 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.google.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wall", "-Wno-shorten-64-to-32", @@ -15350,7 +15882,6 @@ PRODUCT_BUNDLE_IDENTIFIER = com.googlecode.iterm2.applescript; PRODUCT_NAME = iTerm2ForApplescriptTesting; SDKROOT = macosx; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -15497,8 +16028,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = image_decoder/image_decoder.entitlements; CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -15516,6 +16049,7 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_CODE_SIGN_FLAGS = "--timestamp"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SKIP_INSTALL = YES; }; @@ -15613,7 +16147,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = plists/iTermServer.entitlements; CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ""; @@ -15641,6 +16175,7 @@ OTHER_CFLAGS = "-DITERM_SERVER=1"; OTHER_CODE_SIGN_FLAGS = "--timestamp"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; }; name = Development; @@ -15678,9 +16213,9 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = plists/iTermServer.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; @@ -15739,9 +16274,9 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = plists/iTermServer.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; @@ -15800,9 +16335,9 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = plists/iTermServer.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; @@ -16028,8 +16563,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = image_decoder/image_decoder.entitlements; CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -16062,6 +16599,7 @@ OTHER_CODE_SIGN_FLAGS = "--timestamp"; OTHER_LDFLAGS = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SKIP_INSTALL = YES; }; @@ -16087,8 +16625,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = image_decoder/image_decoder.entitlements; CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -16106,6 +16646,7 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_CODE_SIGN_FLAGS = "--timestamp"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SKIP_INSTALL = YES; }; @@ -16131,8 +16672,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = image_decoder/image_decoder.entitlements; CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -16150,6 +16693,7 @@ MTL_ENABLE_DEBUG_INFO = NO; OTHER_CODE_SIGN_FLAGS = "--timestamp"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SKIP_INSTALL = YES; }; @@ -16189,7 +16733,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = pidinfo/pidinfo.entitlements; CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; @@ -16258,9 +16802,9 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = pidinfo/pidinfo.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -16322,9 +16866,9 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = pidinfo/pidinfo.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -16386,9 +16930,9 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_ENTITLEMENTS = pidinfo/pidinfo.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -16776,12 +17320,11 @@ BB024D36096EE4080021E793 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_INT_CONVERSION = YES; CODE_SIGN_ENTITLEMENTS = iTerm2.entitlements; CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; @@ -16839,7 +17382,6 @@ SDKROOT = macosx; SECTORDER_FLAGS = ""; USE_HEADERMAP = NO; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -16857,13 +17399,12 @@ BB024D37096EE4080021E793 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_INT_CONVERSION = YES; CODE_SIGN_ENTITLEMENTS = iTerm2.entitlements; - CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)"; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; DEVELOPMENT_TEAM = ""; @@ -16914,7 +17455,6 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; USE_HEADERMAP = NO; - VALID_ARCHS = x86_64; WARNING_CFLAGS = ( "-Wextra", "-Wall", @@ -16974,7 +17514,6 @@ MACOSX_DEPLOYMENT_TARGET = 10.12; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; - VALID_ARCHS = x86_64; WARNING_CFLAGS = "-Wall"; }; name = Development; @@ -17016,7 +17555,6 @@ GCC_WARN_UNUSED_FUNCTION = YES; MACOSX_DEPLOYMENT_TARGET = 10.12; SDKROOT = macosx; - VALID_ARCHS = "x86_64 i386"; WARNING_CFLAGS = "-Wall"; }; name = Deployment; @@ -17024,6 +17562,17 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 0580F1E624AFB9150099CB8E /* Build configuration list for PBXNativeTarget "sixel" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0580F1E724AFB9150099CB8E /* Development */, + 0580F1E824AFB9150099CB8E /* Deployment */, + 0580F1E924AFB9150099CB8E /* Beta */, + 0580F1EA24AFB9150099CB8E /* Nightly */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; 1D6EDB0519AEA20D005A7799 /* Build configuration list for PBXNativeTarget "iTerm2ForApplescriptTesting" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/sources/iTermBacktrace.mm b/sources/iTermBacktrace.mm index 755caf1542..f148e68bac 100644 --- a/sources/iTermBacktrace.mm +++ b/sources/iTermBacktrace.mm @@ -115,8 +115,11 @@ which is executed in the target thread (as also suggested here: // This bit is x86-64 specific. Have fun fixing this when ARM Macs come out next year :) // This might possibly be right: ucp->m_context.ctx.arm_pc ucontext_t* uc = (ucontext_t*) secret; +#if (defined(__arm64)) + pnt = (void*) uc->uc_mcontext->__ss.__pc ; +#else pnt = (void*) uc->uc_mcontext->__ss.__rip ; - +#endif return pnt; }