Add initial implementation
This commit is contained in:
Родитель
6b1ff4d080
Коммит
29a674d0ac
|
@ -0,0 +1,451 @@
|
||||||
|
# Version: 2.1.0 (Using https://semver.org/)
|
||||||
|
# Updated: 2021-03-03
|
||||||
|
# See https://github.com/RehanSaeed/EditorConfig/releases for release notes.
|
||||||
|
# See https://github.com/RehanSaeed/EditorConfig for updates to this file.
|
||||||
|
# See http://EditorConfig.org for more information about .editorconfig files.
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# Common Settings
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# This file is the top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# All Files
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# File Extension Settings
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# Visual Studio Solution Files
|
||||||
|
[*.sln]
|
||||||
|
indent_style = tab
|
||||||
|
|
||||||
|
# Visual Studio XML Project Files
|
||||||
|
[*.{csproj,vbproj,vcxproj.filters,proj,projitems,shproj}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
# T4 Templates Files
|
||||||
|
[*.{tt,ttinclude}]
|
||||||
|
end_of_line = crlf
|
||||||
|
|
||||||
|
# XML Configuration Files
|
||||||
|
[*.{xml,config,props,targets,nuspec,resx,ruleset,vsixmanifest,vsct}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
# JSON Files
|
||||||
|
[*.{json,json5,webmanifest}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
# YAML Files
|
||||||
|
[*.{yml,yaml}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
# Markdown Files
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
# Web Files
|
||||||
|
[*.{htm,html,js,jsm,ts,tsx,css,sass,scss,less,svg,vue}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
# Batch Files
|
||||||
|
[*.{cmd,bat}]
|
||||||
|
end_of_line = crlf
|
||||||
|
|
||||||
|
# Bash Files
|
||||||
|
[*.sh]
|
||||||
|
end_of_line = lf
|
||||||
|
|
||||||
|
# Makefiles
|
||||||
|
[Makefile]
|
||||||
|
indent_style = tab
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# Default .NET Code Style Severities
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/configuration-options#scope
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
[*.{cs,csx,cake,vb,vbx}]
|
||||||
|
# Default Severity for all .NET Code Style rules below
|
||||||
|
dotnet_analyzer_diagnostic.category-style.severity = warning
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# Language Rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# .NET Style Rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#net-style-rules
|
||||||
|
[*.{cs,csx,cake,vb,vbx}]
|
||||||
|
# "this." and "Me." qualifiers
|
||||||
|
dotnet_style_qualification_for_field = true:warning
|
||||||
|
dotnet_style_qualification_for_property = true:warning
|
||||||
|
dotnet_style_qualification_for_method = true:warning
|
||||||
|
dotnet_style_qualification_for_event = true:warning
|
||||||
|
# Language keywords instead of framework type names for type references
|
||||||
|
dotnet_style_predefined_type_for_locals_parameters_members = true:warning
|
||||||
|
dotnet_style_predefined_type_for_member_access = true:warning
|
||||||
|
# Modifier preferences
|
||||||
|
dotnet_style_require_accessibility_modifiers = always:warning
|
||||||
|
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:warning
|
||||||
|
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:warning
|
||||||
|
dotnet_style_readonly_field = true:warning
|
||||||
|
# Parentheses preferences
|
||||||
|
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:warning
|
||||||
|
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:warning
|
||||||
|
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning
|
||||||
|
dotnet_style_parentheses_in_other_operators = always_for_clarity:suggestion
|
||||||
|
# Expression-level preferences
|
||||||
|
dotnet_style_object_initializer = true:warning
|
||||||
|
dotnet_style_collection_initializer = true:warning
|
||||||
|
dotnet_style_explicit_tuple_names = true:warning
|
||||||
|
dotnet_style_prefer_inferred_tuple_names = true:warning
|
||||||
|
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
|
||||||
|
dotnet_style_prefer_auto_properties = true:warning
|
||||||
|
dotnet_style_prefer_conditional_expression_over_assignment = false:suggestion
|
||||||
|
dotnet_diagnostic.IDE0045.severity = suggestion
|
||||||
|
dotnet_style_prefer_conditional_expression_over_return = false:suggestion
|
||||||
|
dotnet_diagnostic.IDE0046.severity = suggestion
|
||||||
|
dotnet_style_prefer_compound_assignment = true:warning
|
||||||
|
dotnet_style_prefer_simplified_interpolation = true:warning
|
||||||
|
dotnet_style_prefer_simplified_boolean_expressions = true:warning
|
||||||
|
# Null-checking preferences
|
||||||
|
dotnet_style_coalesce_expression = true:warning
|
||||||
|
dotnet_style_null_propagation = true:warning
|
||||||
|
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
|
||||||
|
# File header preferences
|
||||||
|
file_header_template = Copyright (c) Six Labors.\nLicensed under the Apache License, Version 2.0.
|
||||||
|
# SA1636: File header copyright text should match
|
||||||
|
# Justification: .editorconfig supports file headers. If this is changed to a value other than "none", a stylecop.json file will need to added to the project.
|
||||||
|
# dotnet_diagnostic.SA1636.severity = none
|
||||||
|
|
||||||
|
# Undocumented
|
||||||
|
dotnet_style_operator_placement_when_wrapping = end_of_line
|
||||||
|
|
||||||
|
# C# Style Rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#c-style-rules
|
||||||
|
[*.{cs,csx,cake}]
|
||||||
|
# 'var' preferences
|
||||||
|
csharp_style_var_for_built_in_types = never
|
||||||
|
csharp_style_var_when_type_is_apparent = true:warning
|
||||||
|
csharp_style_var_elsewhere = false:warning
|
||||||
|
# Expression-bodied members
|
||||||
|
csharp_style_expression_bodied_methods = true:warning
|
||||||
|
csharp_style_expression_bodied_constructors = true:warning
|
||||||
|
csharp_style_expression_bodied_operators = true:warning
|
||||||
|
csharp_style_expression_bodied_properties = true:warning
|
||||||
|
csharp_style_expression_bodied_indexers = true:warning
|
||||||
|
csharp_style_expression_bodied_accessors = true:warning
|
||||||
|
csharp_style_expression_bodied_lambdas = true:warning
|
||||||
|
csharp_style_expression_bodied_local_functions = true:warning
|
||||||
|
# Pattern matching preferences
|
||||||
|
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
|
||||||
|
csharp_style_pattern_matching_over_as_with_null_check = true:warning
|
||||||
|
csharp_style_prefer_switch_expression = true:warning
|
||||||
|
csharp_style_prefer_pattern_matching = true:warning
|
||||||
|
csharp_style_prefer_not_pattern = true:warning
|
||||||
|
# Expression-level preferences
|
||||||
|
csharp_style_inlined_variable_declaration = true:warning
|
||||||
|
csharp_prefer_simple_default_expression = true:warning
|
||||||
|
csharp_style_pattern_local_over_anonymous_function = true:warning
|
||||||
|
csharp_style_deconstructed_variable_declaration = true:warning
|
||||||
|
csharp_style_prefer_index_operator = true:warning
|
||||||
|
csharp_style_prefer_range_operator = true:warning
|
||||||
|
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
|
||||||
|
# "Null" checking preferences
|
||||||
|
csharp_style_throw_expression = true:warning
|
||||||
|
csharp_style_conditional_delegate_call = true:warning
|
||||||
|
# Code block preferences
|
||||||
|
csharp_prefer_braces = true:warning
|
||||||
|
csharp_prefer_simple_using_statement = true:suggestion
|
||||||
|
dotnet_diagnostic.IDE0063.severity = suggestion
|
||||||
|
# 'using' directive preferences
|
||||||
|
csharp_using_directive_placement = outside_namespace:warning
|
||||||
|
# Modifier preferences
|
||||||
|
csharp_prefer_static_local_function = true:warning
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# Unnecessary Code Rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/unnecessary-code-rules
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# .NET Unnecessary code rules
|
||||||
|
[*.{cs,csx,cake,vb,vbx}]
|
||||||
|
dotnet_code_quality_unused_parameters = all:warning
|
||||||
|
dotnet_remove_unnecessary_suppression_exclusions = none:warning
|
||||||
|
|
||||||
|
# C# Unnecessary code rules
|
||||||
|
[*.{cs,csx,cake}]
|
||||||
|
csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion
|
||||||
|
dotnet_diagnostic.IDE0058.severity = suggestion
|
||||||
|
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
|
||||||
|
dotnet_diagnostic.IDE0059.severity = suggestion
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# Formatting Rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# .NET formatting rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#net-formatting-rules
|
||||||
|
[*.{cs,csx,cake,vb,vbx}]
|
||||||
|
# Organize using directives
|
||||||
|
dotnet_sort_system_directives_first = true
|
||||||
|
dotnet_separate_import_directive_groups = false
|
||||||
|
|
||||||
|
# C# formatting rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#c-formatting-rules
|
||||||
|
[*.{cs,csx,cake}]
|
||||||
|
# Newline options
|
||||||
|
# https://docs.microsoft.com/visualstudio/ide/editorconfig-formatting-conventions#new-line-options
|
||||||
|
csharp_new_line_before_open_brace = all
|
||||||
|
csharp_new_line_before_else = true
|
||||||
|
csharp_new_line_before_catch = true
|
||||||
|
csharp_new_line_before_finally = true
|
||||||
|
csharp_new_line_before_members_in_object_initializers = true
|
||||||
|
csharp_new_line_before_members_in_anonymous_types = true
|
||||||
|
csharp_new_line_between_query_expression_clauses = true
|
||||||
|
# Indentation options
|
||||||
|
# https://docs.microsoft.com/visualstudio/ide/editorconfig-formatting-conventions#indentation-options
|
||||||
|
csharp_indent_case_contents = true
|
||||||
|
csharp_indent_switch_labels = true
|
||||||
|
csharp_indent_labels = no_change
|
||||||
|
csharp_indent_block_contents = true
|
||||||
|
csharp_indent_braces = false
|
||||||
|
csharp_indent_case_contents_when_block = false
|
||||||
|
# Spacing options
|
||||||
|
# https://docs.microsoft.com/visualstudio/ide/editorconfig-formatting-conventions#spacing-options
|
||||||
|
csharp_space_after_cast = false
|
||||||
|
csharp_space_after_keywords_in_control_flow_statements = true
|
||||||
|
csharp_space_between_parentheses = false
|
||||||
|
csharp_space_before_colon_in_inheritance_clause = true
|
||||||
|
csharp_space_after_colon_in_inheritance_clause = true
|
||||||
|
csharp_space_around_binary_operators = before_and_after
|
||||||
|
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
||||||
|
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
||||||
|
csharp_space_between_method_declaration_name_and_open_parenthesis = false
|
||||||
|
csharp_space_between_method_call_parameter_list_parentheses = false
|
||||||
|
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
||||||
|
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
||||||
|
csharp_space_after_comma = true
|
||||||
|
csharp_space_before_comma = false
|
||||||
|
csharp_space_after_dot = false
|
||||||
|
csharp_space_before_dot = false
|
||||||
|
csharp_space_after_semicolon_in_for_statement = true
|
||||||
|
csharp_space_before_semicolon_in_for_statement = false
|
||||||
|
csharp_space_around_declaration_statements = false
|
||||||
|
csharp_space_before_open_square_brackets = false
|
||||||
|
csharp_space_between_empty_square_brackets = false
|
||||||
|
csharp_space_between_square_brackets = false
|
||||||
|
# Wrap options
|
||||||
|
# https://docs.microsoft.com/visualstudio/ide/editorconfig-formatting-conventions#wrap-options
|
||||||
|
csharp_preserve_single_line_statements = false
|
||||||
|
csharp_preserve_single_line_blocks = true
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# .NET Naming Rules
|
||||||
|
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/naming-rules
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
[*.{cs,csx,cake,vb,vbx}]
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# Styles
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# camel_case_style - Define the camelCase style
|
||||||
|
dotnet_naming_style.camel_case_style.capitalization = camel_case
|
||||||
|
# pascal_case_style - Define the PascalCase style
|
||||||
|
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
|
||||||
|
# first_upper_style - The first character must start with an upper-case character
|
||||||
|
dotnet_naming_style.first_upper_style.capitalization = first_word_upper
|
||||||
|
# prefix_interface_with_i_style - Interfaces must be PascalCase and the first character of an interface must be an 'I'
|
||||||
|
dotnet_naming_style.prefix_interface_with_i_style.capitalization = pascal_case
|
||||||
|
dotnet_naming_style.prefix_interface_with_i_style.required_prefix = I
|
||||||
|
# prefix_type_parameters_with_t_style - Generic Type Parameters must be PascalCase and the first character must be a 'T'
|
||||||
|
dotnet_naming_style.prefix_type_parameters_with_t_style.capitalization = pascal_case
|
||||||
|
dotnet_naming_style.prefix_type_parameters_with_t_style.required_prefix = T
|
||||||
|
# disallowed_style - Anything that has this style applied is marked as disallowed
|
||||||
|
dotnet_naming_style.disallowed_style.capitalization = pascal_case
|
||||||
|
# Disabled while we investigate compatibility with VS 16.10
|
||||||
|
#dotnet_naming_style.disallowed_style.required_prefix = ____RULE_VIOLATION____
|
||||||
|
#dotnet_naming_style.disallowed_style.required_suffix = ____RULE_VIOLATION____
|
||||||
|
# internal_error_style - This style should never occur... if it does, it indicates a bug in file or in the parser using the file
|
||||||
|
dotnet_naming_style.internal_error_style.capitalization = pascal_case
|
||||||
|
dotnet_naming_style.internal_error_style.required_prefix = ____INTERNAL_ERROR____
|
||||||
|
dotnet_naming_style.internal_error_style.required_suffix = ____INTERNAL_ERROR____
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# .NET Design Guideline Field Naming Rules
|
||||||
|
# Naming rules for fields follow the .NET Framework design guidelines
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/index
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# All public/protected/protected_internal constant fields must be PascalCase
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/field
|
||||||
|
dotnet_naming_symbols.public_protected_constant_fields_group.applicable_accessibilities = public, protected, protected_internal
|
||||||
|
dotnet_naming_symbols.public_protected_constant_fields_group.required_modifiers = const
|
||||||
|
dotnet_naming_symbols.public_protected_constant_fields_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.symbols = public_protected_constant_fields_group
|
||||||
|
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||||
|
dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.severity = warning
|
||||||
|
|
||||||
|
# All public/protected/protected_internal static readonly fields must be PascalCase
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/field
|
||||||
|
dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_accessibilities = public, protected, protected_internal
|
||||||
|
dotnet_naming_symbols.public_protected_static_readonly_fields_group.required_modifiers = static, readonly
|
||||||
|
dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.symbols = public_protected_static_readonly_fields_group
|
||||||
|
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||||
|
dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.severity = warning
|
||||||
|
|
||||||
|
# No other public/protected/protected_internal fields are allowed
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/field
|
||||||
|
dotnet_naming_symbols.other_public_protected_fields_group.applicable_accessibilities = public, protected, protected_internal
|
||||||
|
dotnet_naming_symbols.other_public_protected_fields_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.symbols = other_public_protected_fields_group
|
||||||
|
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.style = disallowed_style
|
||||||
|
dotnet_naming_rule.other_public_protected_fields_disallowed_rule.severity = error
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# StyleCop Field Naming Rules
|
||||||
|
# Naming rules for fields follow the StyleCop analyzers
|
||||||
|
# This does not override any rules using disallowed_style above
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# All constant fields must be PascalCase
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1303.md
|
||||||
|
dotnet_naming_symbols.stylecop_constant_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private
|
||||||
|
dotnet_naming_symbols.stylecop_constant_fields_group.required_modifiers = const
|
||||||
|
dotnet_naming_symbols.stylecop_constant_fields_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.symbols = stylecop_constant_fields_group
|
||||||
|
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||||
|
dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.severity = warning
|
||||||
|
|
||||||
|
# All static readonly fields must be PascalCase
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1311.md
|
||||||
|
dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private
|
||||||
|
dotnet_naming_symbols.stylecop_static_readonly_fields_group.required_modifiers = static, readonly
|
||||||
|
dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.symbols = stylecop_static_readonly_fields_group
|
||||||
|
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style
|
||||||
|
dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.severity = warning
|
||||||
|
|
||||||
|
# No non-private instance fields are allowed
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1401.md
|
||||||
|
dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected
|
||||||
|
dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.symbols = stylecop_fields_must_be_private_group
|
||||||
|
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.style = disallowed_style
|
||||||
|
dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.severity = error
|
||||||
|
|
||||||
|
# Private fields must be camelCase
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1306.md
|
||||||
|
dotnet_naming_symbols.stylecop_private_fields_group.applicable_accessibilities = private
|
||||||
|
dotnet_naming_symbols.stylecop_private_fields_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.symbols = stylecop_private_fields_group
|
||||||
|
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.style = camel_case_style
|
||||||
|
dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.severity = warning
|
||||||
|
|
||||||
|
# Local variables must be camelCase
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1312.md
|
||||||
|
dotnet_naming_symbols.stylecop_local_fields_group.applicable_accessibilities = local
|
||||||
|
dotnet_naming_symbols.stylecop_local_fields_group.applicable_kinds = local
|
||||||
|
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.symbols = stylecop_local_fields_group
|
||||||
|
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.style = camel_case_style
|
||||||
|
dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.severity = silent
|
||||||
|
|
||||||
|
# This rule should never fire. However, it's included for at least two purposes:
|
||||||
|
# First, it helps to understand, reason about, and root-case certain types of issues, such as bugs in .editorconfig parsers.
|
||||||
|
# Second, it helps to raise immediate awareness if a new field type is added (as occurred recently in C#).
|
||||||
|
dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_accessibilities = *
|
||||||
|
dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_kinds = field
|
||||||
|
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.symbols = sanity_check_uncovered_field_case_group
|
||||||
|
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.style = internal_error_style
|
||||||
|
dotnet_naming_rule.sanity_check_uncovered_field_case_rule.severity = error
|
||||||
|
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# Other Naming Rules
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# All of the following must be PascalCase:
|
||||||
|
# - Namespaces
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-namespaces
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1300.md
|
||||||
|
# - Classes and Enumerations
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces
|
||||||
|
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1300.md
|
||||||
|
# - Delegates
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces#names-of-common-types
|
||||||
|
# - Constructors, Properties, Events, Methods
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-type-members
|
||||||
|
dotnet_naming_symbols.element_group.applicable_kinds = namespace, class, enum, struct, delegate, event, method, property
|
||||||
|
dotnet_naming_rule.element_rule.symbols = element_group
|
||||||
|
dotnet_naming_rule.element_rule.style = pascal_case_style
|
||||||
|
dotnet_naming_rule.element_rule.severity = warning
|
||||||
|
|
||||||
|
# Interfaces use PascalCase and are prefixed with uppercase 'I'
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces
|
||||||
|
dotnet_naming_symbols.interface_group.applicable_kinds = interface
|
||||||
|
dotnet_naming_rule.interface_rule.symbols = interface_group
|
||||||
|
dotnet_naming_rule.interface_rule.style = prefix_interface_with_i_style
|
||||||
|
dotnet_naming_rule.interface_rule.severity = warning
|
||||||
|
|
||||||
|
# Generics Type Parameters use PascalCase and are prefixed with uppercase 'T'
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces
|
||||||
|
dotnet_naming_symbols.type_parameter_group.applicable_kinds = type_parameter
|
||||||
|
dotnet_naming_rule.type_parameter_rule.symbols = type_parameter_group
|
||||||
|
dotnet_naming_rule.type_parameter_rule.style = prefix_type_parameters_with_t_style
|
||||||
|
dotnet_naming_rule.type_parameter_rule.severity = warning
|
||||||
|
|
||||||
|
# Function parameters use camelCase
|
||||||
|
# https://docs.microsoft.com/dotnet/standard/design-guidelines/naming-parameters
|
||||||
|
dotnet_naming_symbols.parameters_group.applicable_kinds = parameter
|
||||||
|
dotnet_naming_rule.parameters_rule.symbols = parameters_group
|
||||||
|
dotnet_naming_rule.parameters_rule.style = camel_case_style
|
||||||
|
dotnet_naming_rule.parameters_rule.severity = warning
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# License
|
||||||
|
##########################################
|
||||||
|
# The following applies as to the .editorconfig file ONLY, and is
|
||||||
|
# included below for reference, per the requirements of the license
|
||||||
|
# corresponding to this .editorconfig file.
|
||||||
|
# See: https://github.com/RehanSaeed/EditorConfig
|
||||||
|
#
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017-2019 Muhammad Rehan Saeed
|
||||||
|
# Copyright (c) 2019 Henry Gabryjelski
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
##########################################
|
|
@ -0,0 +1,128 @@
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior to:
|
||||||
|
# treat as text and
|
||||||
|
# normalize to Unix-style line endings
|
||||||
|
###############################################################################
|
||||||
|
* text eol=lf
|
||||||
|
###############################################################################
|
||||||
|
# Set explicit file behavior to:
|
||||||
|
# treat as text and
|
||||||
|
# normalize to Unix-style line endings
|
||||||
|
###############################################################################
|
||||||
|
*.asm text eol=lf
|
||||||
|
*.c text eol=lf
|
||||||
|
*.clj text eol=lf
|
||||||
|
*.cmd text eol=lf
|
||||||
|
*.cpp text eol=lf
|
||||||
|
*.css text eol=lf
|
||||||
|
*.cxx text eol=lf
|
||||||
|
*.config text eol=lf
|
||||||
|
*.DotSettings text eol=lf
|
||||||
|
*.erl text eol=lf
|
||||||
|
*.fs text eol=lf
|
||||||
|
*.fsx text eol=lf
|
||||||
|
*.h text eol=lf
|
||||||
|
*.htm text eol=lf
|
||||||
|
*.html text eol=lf
|
||||||
|
*.hs text eol=lf
|
||||||
|
*.hxx text eol=lf
|
||||||
|
*.java text eol=lf
|
||||||
|
*.js text eol=lf
|
||||||
|
*.json text eol=lf
|
||||||
|
*.less text eol=lf
|
||||||
|
*.lisp text eol=lf
|
||||||
|
*.lua text eol=lf
|
||||||
|
*.m text eol=lf
|
||||||
|
*.md text eol=lf
|
||||||
|
*.php text eol=lf
|
||||||
|
*.props text eol=lf
|
||||||
|
*.ps1 text eol=lf
|
||||||
|
*.py text eol=lf
|
||||||
|
*.rb text eol=lf
|
||||||
|
*.resx text eol=lf
|
||||||
|
*.runsettings text eol=lf
|
||||||
|
*.ruleset text eol=lf
|
||||||
|
*.sass text eol=lf
|
||||||
|
*.scss text eol=lf
|
||||||
|
*.sh text eol=lf
|
||||||
|
*.sql text eol=lf
|
||||||
|
*.svg text eol=lf
|
||||||
|
*.targets text eol=lf
|
||||||
|
*.tt text eol=crlf
|
||||||
|
*.ttinclude text eol=crlf
|
||||||
|
*.txt text eol=lf
|
||||||
|
*.vb text eol=lf
|
||||||
|
*.yml text eol=lf
|
||||||
|
###############################################################################
|
||||||
|
# Set explicit file behavior to:
|
||||||
|
# treat as text
|
||||||
|
# normalize to Unix-style line endings and
|
||||||
|
# diff as csharp
|
||||||
|
###############################################################################
|
||||||
|
*.cs text eol=lf diff=csharp
|
||||||
|
###############################################################################
|
||||||
|
# Set explicit file behavior to:
|
||||||
|
# treat as text
|
||||||
|
# normalize to Unix-style line endings and
|
||||||
|
# use a union merge when resoling conflicts
|
||||||
|
###############################################################################
|
||||||
|
*.csproj text eol=lf merge=union
|
||||||
|
*.dbproj text eol=lf merge=union
|
||||||
|
*.fsproj text eol=lf merge=union
|
||||||
|
*.ncrunchproject text eol=lf merge=union
|
||||||
|
*.vbproj text eol=lf merge=union
|
||||||
|
###############################################################################
|
||||||
|
# Set explicit file behavior to:
|
||||||
|
# treat as text
|
||||||
|
# normalize to Windows-style line endings and
|
||||||
|
# use a union merge when resoling conflicts
|
||||||
|
###############################################################################
|
||||||
|
*.sln text eol=crlf merge=union
|
||||||
|
###############################################################################
|
||||||
|
# Set explicit file behavior to:
|
||||||
|
# treat as binary
|
||||||
|
###############################################################################
|
||||||
|
*.basis binary
|
||||||
|
*.dll binary
|
||||||
|
*.eot binary
|
||||||
|
*.exe binary
|
||||||
|
*.otf binary
|
||||||
|
*.pbm binary
|
||||||
|
*.pdf binary
|
||||||
|
*.ppt binary
|
||||||
|
*.pptx binary
|
||||||
|
*.pvr binary
|
||||||
|
*.snk binary
|
||||||
|
*.ttc binary
|
||||||
|
*.ttf binary
|
||||||
|
*.wbmp binary
|
||||||
|
*.woff binary
|
||||||
|
*.woff2 binary
|
||||||
|
*.xls binary
|
||||||
|
*.xlsx binary
|
||||||
|
###############################################################################
|
||||||
|
# Set explicit file behavior to:
|
||||||
|
# diff as plain text
|
||||||
|
###############################################################################
|
||||||
|
*.doc diff=astextplain
|
||||||
|
*.docx diff=astextplain
|
||||||
|
*.dot diff=astextplain
|
||||||
|
*.pdf diff=astextplain
|
||||||
|
*.pptx diff=astextplain
|
||||||
|
*.rtf diff=astextplain
|
||||||
|
*.svg diff=astextplain
|
||||||
|
###############################################################################
|
||||||
|
# Handle image files by git lfs
|
||||||
|
###############################################################################
|
||||||
|
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bmp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gif filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tif filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tiff filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tga filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.webp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.dds filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ktx filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ktx2 filter=lfs diff=lfs merge=lfs -text
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Code of Conduct
|
||||||
|
This project has adopted the code of conduct defined by the [Contributor Covenant](https://contributor-covenant.org/) to clarify expected behavior in our community.
|
||||||
|
For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Directory.Build.props is automatically picked up and imported by
|
||||||
|
Microsoft.Common.props. This file needs to exist, even if empty so that
|
||||||
|
files in the parent directory tree, with the same name, are not imported
|
||||||
|
instead. The import fairly early and only Sdk.props will have been imported
|
||||||
|
beforehand. We also don't need to add ourselves to MSBuildAllProjects, as
|
||||||
|
that is done by the file that imports us.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<!-- This MUST be defined before importing props. -->
|
||||||
|
<SixLaborsSolutionDirectory>$(MSBuildThisFileDirectory)</SixLaborsSolutionDirectory>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Import the shared global .props file -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)shared-infrastructure\msbuild\props\SixLabors.Global.props" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Ensure all custom build configurations based upon "Release" are optimized.
|
||||||
|
This is easier than setting each project individually.
|
||||||
|
-->
|
||||||
|
<PropertyGroup Condition="$(Configuration.StartsWith('Release')) == true">
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Directory.Build.targets is automatically picked up and imported by
|
||||||
|
Microsoft.Common.targets. This file needs to exist, even if empty so that
|
||||||
|
files in the parent directory tree, with the same name, are not imported
|
||||||
|
instead. They import fairly late and most other props/targets will have been
|
||||||
|
imported beforehand. We also don't need to add ourselves to
|
||||||
|
MSBuildAllProjects, as that is done by the file that imports us.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Import the shared global .props file -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)shared-infrastructure\msbuild\targets\SixLabors.Global.targets"/>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,55 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.31424.327
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_root", "_root", "{1CCAF524-8335-44B4-A289-9708FA70D6D2}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
Directory.Build.props = Directory.Build.props
|
||||||
|
Directory.Build.targets = Directory.Build.targets
|
||||||
|
README.md = README.md
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E2A0566F-B4EA-4B68-81FC-991364C9D5A9}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
src\Directory.Build.props = src\Directory.Build.props
|
||||||
|
src\Directory.Build.targets = src\Directory.Build.targets
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DDD75627-3572-45A0-B057-94D5FA523584}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
tests\coverlet.runsettings = tests\coverlet.runsettings
|
||||||
|
tests\Directory.Build.props = tests\Directory.Build.props
|
||||||
|
tests\Directory.Build.targets = tests\Directory.Build.targets
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageSharp.Interactive", "src\ImageSharp.Interactive\ImageSharp.Interactive.csproj", "{01AD3011-CBD5-4027-918A-F44646EC8D20}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageSharp.Interactive.Tests", "tests\ImageSharp.Interactive.Tests\ImageSharp.Interactive.Tests.csproj", "{97E96F09-E465-4D7D-BB46-0C5494367D30}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{01AD3011-CBD5-4027-918A-F44646EC8D20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{01AD3011-CBD5-4027-918A-F44646EC8D20}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{01AD3011-CBD5-4027-918A-F44646EC8D20}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{01AD3011-CBD5-4027-918A-F44646EC8D20}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{97E96F09-E465-4D7D-BB46-0C5494367D30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{97E96F09-E465-4D7D-BB46-0C5494367D30}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{97E96F09-E465-4D7D-BB46-0C5494367D30}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{97E96F09-E465-4D7D-BB46-0C5494367D30}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{01AD3011-CBD5-4027-918A-F44646EC8D20} = {E2A0566F-B4EA-4B68-81FC-991364C9D5A9}
|
||||||
|
{97E96F09-E465-4D7D-BB46-0C5494367D30} = {DDD75627-3572-45A0-B057-94D5FA523584}
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {9B3766E0-3B65-48E6-9C69-4259C392F12F}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
19
README.md
19
README.md
|
@ -1,2 +1,19 @@
|
||||||
# SixLabors.ImageSharp.Interactive
|
# SixLabors.ImageSharp.Interactive
|
||||||
A DotNet.Interactive implementation using ImageSharp
|
<h1 align="center">
|
||||||
|
|
||||||
|
<img src="https://github.com/SixLabors/Branding/raw/master/icons/imagesharp/sixlabors.imagesharp.svg?sanitize=true" alt="SixLabors.ImageSharp" width="256"/>
|
||||||
|
<br/>
|
||||||
|
SixLabors.ImageSharp.Interactive
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[![Build Status](https://img.shields.io/github/workflow/status/SixLabors/ImageSharp.Interactive/Build/master)](https://github.com/SixLabors/ImageSharp/actions)
|
||||||
|
[![Code coverage](https://codecov.io/gh/SixLabors/ImageSharp.Interactive/branch/master/graph/badge.svg)](https://codecov.io/gh/SixLabors/ImageSharp)
|
||||||
|
[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
|
||||||
|
[![Twitter](https://img.shields.io/twitter/url/http/shields.io.svg?style=flat&logo=twitter)](https://twitter.com/intent/tweet?hashtags=imagesharp,dotnet,oss&text=ImageSharp.+A+new+cross-platform+2D+graphics+API+in+C%23&url=https%3a%2f%2fgithub.com%2fSixLabors%2fImageSharp&via=sixlabors)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
### A [.NET Interactive](https://github.com/dotnet/interactive/) implementation using ImageSharp
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Documentation: https://docs.codecov.io/docs/codecov-yaml
|
||||||
|
|
||||||
|
codecov:
|
||||||
|
# Avoid "Missing base report"
|
||||||
|
# https://github.com/codecov/support/issues/363
|
||||||
|
# https://docs.codecov.io/docs/comparing-commits
|
||||||
|
allow_coverage_offsets: true
|
||||||
|
|
||||||
|
# Avoid Report Expired
|
||||||
|
# https://docs.codecov.io/docs/codecov-yaml#section-expired-reports
|
||||||
|
max_report_age: off
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Directory.Build.props is automatically picked up and imported by
|
||||||
|
Microsoft.Common.props. This file needs to exist, even if empty so that
|
||||||
|
files in the parent directory tree, with the same name, are not imported
|
||||||
|
instead. They import fairly early and only Sdk.props will have been
|
||||||
|
imported beforehand. We also don't need to add ourselves to
|
||||||
|
MSBuildAllProjects, as that is done by the file that imports us.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Import the shared src .props file -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\shared-infrastructure\msbuild\props\SixLabors.Src.props" />
|
||||||
|
|
||||||
|
<!-- Import the solution .props file. -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.props" />
|
||||||
|
|
||||||
|
<!-- Compilation properties. -->
|
||||||
|
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
||||||
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- DynamicProxyGenAssembly2 is needed so Moq can use our internals -->
|
||||||
|
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" Key="0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7" />
|
||||||
|
<InternalsVisibleTo Include="SixLabors.ImageSharp.Interactive.Tests" Key="$(SixLaborsPublicKey)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Directory.Build.targets is automatically picked up and imported by
|
||||||
|
Microsoft.Common.targets. This file needs to exist, even if empty so that
|
||||||
|
files in the parent directory tree, with the same name, are not imported
|
||||||
|
instead. They import fairly late and most other props/targets will have
|
||||||
|
been imported beforehand. We also don't need to add ourselves to
|
||||||
|
MSBuildAllProjects, as that is done by the file that imports us.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Import the shared src .targets file -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\shared-infrastructure\msbuild\targets\SixLabors.Src.targets" />
|
||||||
|
|
||||||
|
<!-- Import the solution .targets file. -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.targets" />
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<AssemblyName>SixLabors.ImageSharp.Interactive</AssemblyName>
|
||||||
|
<AssemblyTitle>SixLabors.ImageSharp.Interactive</AssemblyTitle>
|
||||||
|
<RootNamespace>SixLabors.ImageSharp.Interactive</RootNamespace>
|
||||||
|
<PackageId>SixLabors.ImageSharp.Interactive</PackageId>
|
||||||
|
<PackageIcon>sixlabors.imagesharp.128.png</PackageIcon>
|
||||||
|
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
|
||||||
|
<RepositoryUrl Condition="'$(RepositoryUrl)' == ''">https://github.com/SixLabors/ImageSharp.Interactive/</RepositoryUrl>
|
||||||
|
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl>
|
||||||
|
<TargetFramework>netstandard2.1</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.DotNet.Interactive" Version="1.0.0-beta.21357.1" />
|
||||||
|
<PackageReference Include="Microsoft.DotNet.Interactive.Formatting" Version="1.0.0-beta.21357.1" />
|
||||||
|
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.3" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,48 @@
|
||||||
|
// Copyright (c) Six Labors.
|
||||||
|
// Licensed under the Apache License, Version 2.0.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.DotNet.Interactive;
|
||||||
|
using Microsoft.DotNet.Interactive.Commands;
|
||||||
|
using Microsoft.DotNet.Interactive.Formatting;
|
||||||
|
using SixLabors.ImageSharp;
|
||||||
|
using SixLabors.ImageSharp.Formats;
|
||||||
|
using SixLabors.ImageSharp.Formats.Gif;
|
||||||
|
using SixLabors.ImageSharp.Formats.Png;
|
||||||
|
|
||||||
|
namespace ImageSharp.Interactive
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A <see cref="IKernelExtension"/> implementation adding support for ImageSharp images.
|
||||||
|
/// </summary>
|
||||||
|
public class KernelExtension : IKernelExtension
|
||||||
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public Task OnLoadAsync(Kernel kernel)
|
||||||
|
{
|
||||||
|
Formatter.Register<Image>(
|
||||||
|
(image, writer) =>
|
||||||
|
{
|
||||||
|
string id = Guid.NewGuid().ToString("N");
|
||||||
|
PocketView imgTag = CreateImgTag(image, id, image.Height, image.Width);
|
||||||
|
writer.Write(imgTag);
|
||||||
|
}, HtmlFormatter.MimeType);
|
||||||
|
|
||||||
|
return kernel.SendAsync(
|
||||||
|
new DisplayValue(new FormattedValue(
|
||||||
|
"text/markdown",
|
||||||
|
$"Added support for SixLabors.ImageSharp to kernel {kernel.Name}.")));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PocketView CreateImgTag(Image image, string id, int height, int width)
|
||||||
|
{
|
||||||
|
IImageFormat format = image.Frames.Count > 1
|
||||||
|
? (IImageFormat)GifFormat.Instance
|
||||||
|
: PngFormat.Instance;
|
||||||
|
string imageSource = image.ToBase64String(format);
|
||||||
|
|
||||||
|
return (PocketView)PocketViewTags.img[id: id, src: imageSource, height: height, width: width]();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Directory.Build.props is automatically picked up and imported by
|
||||||
|
Microsoft.Common.props. This file needs to exist, even if empty so that
|
||||||
|
files in the parent directory tree, with the same name, are not imported
|
||||||
|
instead. They import fairly early and only Sdk.props will have been
|
||||||
|
imported beforehand. We also don't need to add ourselves to
|
||||||
|
MSBuildAllProjects, as that is done by the file that imports us.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Import the shared tests .props file -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\shared-infrastructure\msbuild\props\SixLabors.Tests.props" />
|
||||||
|
|
||||||
|
<!-- Import the solution .props file. -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.props" />
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="$(MSBuildThisFileDirectory)..\src\ImageSharp.Interactive\ImageSharp.Interactive.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Directory.Build.targets is automatically picked up and imported by
|
||||||
|
Microsoft.Common.targets. This file needs to exist, even if empty so that
|
||||||
|
files in the parent directory tree, with the same name, are not imported
|
||||||
|
instead. They import fairly late and most other props/targets will have
|
||||||
|
been imported beforehand. We also don't need to add ourselves to
|
||||||
|
MSBuildAllProjects, as that is done by the file that imports us.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Import the shared tests .targets file -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\shared-infrastructure\msbuild\targets\SixLabors.Tests.targets" />
|
||||||
|
|
||||||
|
<!-- Import the solution .targets file. -->
|
||||||
|
<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.targets" />
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<!-- Test Dependencies -->
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<AssemblyName>SixLabors.ImageSharp.Tests</AssemblyName>
|
||||||
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,15 @@
|
||||||
|
// Copyright (c) Six Labors.
|
||||||
|
// Licensed under the Apache License, Version 2.0.
|
||||||
|
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace ImageSharp.Interactive.Tests
|
||||||
|
{
|
||||||
|
public class UnitTest1
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Test1()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<RunSettings>
|
||||||
|
<RunConfiguration>
|
||||||
|
<!--Used in conjunction with ActiveIssueAttribute to skip tests with known issues-->
|
||||||
|
<TestCaseFilter>category!=failing</TestCaseFilter>
|
||||||
|
</RunConfiguration>
|
||||||
|
<DataCollectionRunSettings>
|
||||||
|
<DataCollectors>
|
||||||
|
<DataCollector friendlyName="XPlat code coverage">
|
||||||
|
<Configuration>
|
||||||
|
<Format>lcov</Format>
|
||||||
|
<Include>[SixLabors.*]*</Include>
|
||||||
|
<UseSourceLink>true</UseSourceLink>
|
||||||
|
</Configuration>
|
||||||
|
</DataCollector>
|
||||||
|
</DataCollectors>
|
||||||
|
</DataCollectionRunSettings>
|
||||||
|
</RunSettings>
|
Загрузка…
Ссылка в новой задаче