속성이나 프로퍼티의 초기값은 해당 속성 또는 프로퍼티가 명시되지 않았거나 잘못된 값이 지정됐을 때 사용되는 값입니다. 이 값은 렌더링, 애니메이션 값 계산, 그리고 DOM 인터페이스를 통해 속성이나 프로퍼티에 접근할 때 사용됩니다.
이 명세에서는 속성을 다음과 같이 속성 정의 테이블로 정의합니다:
이름 | 값 | 초기값 | 애니메이션 가능 |
---|---|---|---|
exampleattr | <길이> | none | none | 예 |
값(Value) 열에는 속성 문법에 대한 설명이 있습니다. 속성 문법을 설명하는 방법은 총 6가지가 있습니다:
SVG 2 요구사항: | 프레젠테이션 속성 값의 대소문자 민감도 완화 고려. |
---|---|
결정: | 프로퍼티 값의 대소문자 구분을 하지 않도록 변경. |
목적: | 프레젠테이션 속성 문법 파싱을 해당 CSS 프로퍼티 파싱과 일치시키기 위함. |
담당자: | Cameron (ACTION-3276) |
상태: | 완료 |
CSS 값 정의 문법으로 정의된 프레젠테이션 속성을 파싱할 때는 다음과 같이 처리합니다:
여기서 <숫자> 기호를 삽입하면 단위 없는 길이나 각도를 프레젠테이션 속성에서 사용할 수 있지만, 해당 프로퍼티 값에서는 허용되지 않습니다.
모든 프레젠테이션 속성은 대응되는 CSS 프로퍼티를 참조해 정의하므로 CSS 값 정의 문법으로 정의됩니다.
CSS 값 정의 문법으로 정의된 다른 속성을 파싱할 때는 속성 정의 테이블에 나온 문법대로 속성 값을 파싱합니다.
이 방식으로 CSS 주석과 이스케이프를 해당 속성에서 사용할 수 있습니다. 예를 들어, '10\px/**/' 값은 '10px'으로 성공적으로 파싱되어 ‘rect’ 요소의 ‘x’ 프레젠테이션 속성으로 사용될 수 있습니다.
URL로 정의된 속성을 파싱할 때는 URL 파서를 사용하여 속성 값을 input으로, 문서의 URL을 base로 넘겨 파싱합니다 [URL].
초기값 열에는 해당 속성의 초기값이 나옵니다. 속성이 지정된 CSS 값 정의 문법, ABNF, EBNF 문법을 따라 파싱에 실패하거나, URL 현행 표준이나 속성 파싱을 설명하는 본문에 따라 파싱이 실패한 경우, 해당 속성은 초기값이 지정된 것으로 간주됩니다.
프레젠테이션 속성의 초기값은 대응하는 프로퍼티의 초기값입니다. 프레젠테이션 속성에 잘못된 값을 사용할 경우, 초기값이 지정된 것처럼 처리되므로, 사용자 에이전트 스타일시트 등 우선순위가 낮은 스타일 규칙 값을 덮어쓸 수 있습니다.
예를 들어, 사용자 에이전트 스타일시트가 ‘svg’ 요소의 overflow 프로퍼티 값을 hidden으로 설정하더라도, overflow="invalid"와 같이 잘못된 프레젠테이션 속성을 지정하면 overflow가 visible로 설정되어 사용자 에이전트 스타일시트 값을 덮어쓰게 됩니다.
애니메이션 가능 열에는 해당 속성이 애니메이션 요소로 SVG 애니메이션 모듈에서 정의된 대로 애니메이션 처리할 수 있는지 여부가 나옵니다.
별도 명시가 없는 한, SVG 속성과 SVG 요소에 영향을 주는 프로퍼티의 숫자 값은 호스트 아키텍처에서 지원하는 모든 유한 단정밀도(single-precision) 값을 반드시 지원해야 합니다.
좌표계 변환 등 연산에서는 더 높은 정밀도의 부동소수점 저장 및 계산을 수행하여 최상의 정밀도를 제공하고 반올림 오류를 방지하는 것이 권장됩니다.
적합한 SVG 뷰어는 적합성 기준에 따라 수치 계산을 수행해야 합니다.
일부 숫자 속성 및 프로퍼티 값은 제한된 범위를 가집니다. 다른 값들은 장치의 제한에 의해 제한될 수 있습니다. 별도 명시가 없다면, 사용자 에이전트는 범위를 벗어난 오류 검사를 렌더링 과정에서 가능한 한 늦게까지 미뤄야 합니다. 이는 특히 장치 제한과 관련하여 중요하며, 복합 연산에서 중간값은 범위를 벗어날 수 있지만 최종값은 범위 내에 있을 수 있기 때문입니다.
스크립트 실행을 지원하는 SVG 뷰어 또는 SVG 인터프리터는 본 명세 전체에서 정의된 SVG DOM 인터페이스를 반드시 구현해야 하며, 구체적인 요구사항과 의존성은 본 절에 명시되어 있습니다.
SVG 2 요구사항: | DOM 개선. |
---|---|
결정: | SVG 2에서 SVG DOM을 전반적으로 개선할 예정. |
목적: | 저자가 SVG DOM을 더 쉽게 사용할 수 있도록 자바 스타일을 탈피함. |
담당자: | Cameron (ACTION-3273) |
참고: | SVG 2 DOM 위키 페이지 참고. |
SVG 2 요구사항: | SVG 경로 DOM API 개선. |
---|---|
결정: | SVG 2에서 SVG 경로 DOM API를 개선할 예정. |
목적: | SVGPathSegList 인터페이스를 정리하고, 필요시 Canvas와 API를 공유함. |
담당자: | Cameron (별도 action 없음) |
SVG DOM은 Web IDL 인터페이스로 정의됩니다. 본 명세의 모든 IDL 조각은 적합한 IDL 조각으로 해석되어야 하며, 자세한 내용은 Web IDL 명세 참고 [WebIDL]
SVG DOM은 여러 DOM 명세를 기반으로 합니다. 특히:
SVG DOM은 HTML 및 DOM 표준([HTML], [DOM])과 유사한 명명 규칙을 따릅니다.
모든 이름은 하나 이상의 영어 단어를 연결해 하나의 문자열로 정의됩니다. 프로퍼티나 메서드 이름은 첫 단어를 소문자로 시작하고, 이후 단어는 첫 글자가 대문자입니다. 예를 들어, 파일 생성 날짜 등 문서 메타 정보를 반환하는 프로퍼티는 "fileDateCreated" 형태입니다.
본 명세에서 정의된 인터페이스 이름은 거의 모두 "SVG"로 시작합니다.
SVG 네임스페이스 요소의 DOM Element 객체를
나타내는 인터페이스는 SVGElementNameElement
형식을 따르며, ElementName
은 요소 태그 이름의 첫 글자를
대문자로 표시합니다.
예를 들어 SVGRadialGradientElement는 ‘radialGradient’
요소의 인터페이스입니다.
이 케이싱 규칙의 예외는 SVGSVGElement로, 태그 이름 전체가 대문자입니다.
SVG DOM을 지원해야 하는 모든 SVG 소프트웨어는 SVG 문서 프래그먼트에 대해 다음과 같이 DOM 요소를 확장해야 합니다:
지원하는 SVG 요소(즉, 네임스페이스 URI가 "http://www.w3.org/2000/svg"이고, 로컬 이름이 본 명세 또는 소프트웨어가 구현하는 다른 명세에서 정의된 요소 중 하나인 요소)에 해당하는 Element 객체는 반드시 해당 요소 정의에서 지정한 DOM 인터페이스도 구현해야 합니다.
SVG 네임스페이스 내에서 로컬 이름이 소프트웨어가 지원하는 명세에 정의된 요소와 일치하지 않는 요소는 SVGUnknownElement 인터페이스를 구현해야 하며, 반드시 SVGElement 인터페이스도 구현해야 합니다.
SVGUnknownElement 인터페이스는 "위험군"입니다.
‘rect’ 요소에서 SVGRectElement 인터페이스가 지정됩니다. 즉, 네임스페이스 URI가 "http://www.w3.org/2000/svg"이고 로컬 이름이 "rect"인 Element 객체는 반드시 SVGRectElement도 구현해야 합니다.
SVG DOM 프로퍼티(IDL 속성) 중 다수는 해당 요소의 콘텐츠 속성 또는 프로퍼티를 반영합니다. 즉, 콘텐츠 속성과 IDL 속성이 동일한 기본 데이터를 나타냅니다. 예를 들어, SVGAnimatedLength ry는 SVGRectElement에서 해당 ‘rect’ 요소의 ry 프레젠테이션 속성을 반영합니다.
이 반영 방식은 IDL 속성의 타입에 따라 다릅니다:
상위 수준에서, 객체의 baseVal
을 콘텐츠 속성 값 반영에 사용합니다.
CSS 프로퍼티를 반영하는 객체의 경우 baseVal
은 프레젠테이션 속성 반영에 사용됩니다.
이 관계는 실시간(live)이므로, 속성 또는 반영 프로퍼티가 수정될 때마다 값이 반드시 동기화되어야 하며(자세한 규칙은 반영 값 동기화 참고), 어느 한쪽을 수정할 때 반영되어야 합니다.
속성이 문서 마크업에서 명시적으로 지정되지 않더라도, 해당 속성에 접근하면 반영 객체가 반드시 초기값으로 초기화됩니다. 만약 속성의 초기값이 (없음)이라면, 비어있는 초기값 반영에서 정의된 대로 객체가 초기화됩니다. 새로 생성된 객체는 최초로 수정되기 전까지 요소에 속성으로 추가되지 않습니다. 대응 속성의 수정을 즉시 객체에 반영합니다.
예를 들어 lineElement.x1.baseVal
에 접근하면
(lineElement
는 SVGLineElement
인스턴스)
‘x1’
속성이 문서에서 명시되지 않았다면,
반환된 SVGLength 객체는 0
사용자 단위 값을 나타내며,
해당 속성의 초기값이 0이기 때문입니다.
반영되는 콘텐츠 속성의 기본값이 변경될 때마다, 반영 객체는 값 변경 직후 아래 절차를 따라 동기화되어야 합니다:
반영된 콘텐츠 속성을 재직렬화할 때(특정 값을 사용할 수도 있음), 아래 절차를 수행해야 합니다:
열거값이 "unknown" 값이면, 콘텐츠 속성은 빈 문자열로 설정됩니다.
값은 SVGNumber, SVGLength, DOMPoint, SVGTransform 객체, 또는 DOMString 값입니다. value의 타입에 따라 결정됩니다.
null 또는 비어있는 초기값을 반영하는 SVG DOM 속성 초기화 시, 해당 프로퍼티는 본 절에서 정의된 데이터 타입에 따라 초기화되어야 합니다. 이는 반영되는 콘텐츠 속성에 명시적 값이 없고, 속성 정의 테이블의 초기값이 (없음)일 때에만 발생합니다.
아래에 명시되지 않은 인터페이스는, 해당 인터페이스가 포함하는 객체의 값을 사용해 초기화해야 합니다. 예를 들어, SVGAnimatedString은 두 개의 DOMString 멤버로 구성되고, DOMRect는 여러 double로 구성됩니다.
만약 textElement.dx.baseVal
에 접근하면
(textElement
는 SVGTextElement
인스턴스)
‘dx’
속성이 문서에서 명시되지 않았다면,
반환된 SVGLengthList 객체는 빈 리스트가 됩니다.
스크립트가 반영된 DOM 속성에 대해 콘텐츠 속성에 잘못된 값을 설정하면(예: 음수가 필요한 속성에 음수, 열거형에 범위 밖 값 등), 본 명세에서 별도 명시하지 않는 한, 설정 시 예외를 발생시키지 않으며, 해당 문서 프래그먼트는 오류 처리에 따라 기술적으로 오류 상태가 됩니다.
현재 많은 브라우저가 범위를 벗어난 열거형 값이나 열거형을 UNKNOWN 값으로 명시적으로 설정할 경우 오류를 발생시킵니다. 토론은 Should setting an enum IDL to an invalid value throw an error?의 GitHub 이슈 참고.
SVG 언어의 요소에 직접 대응하는 모든 SVG DOM 인터페이스(예: ‘path’ 요소에 대한 SVGPathElement 인터페이스)는 SVGElement 인터페이스를 상속합니다.
CSSOM 명세는 SVGElement에 style IDL 속성을 추가하여 ‘style’ 속성에 HTML 요소와 동일하게 접근할 수 있도록 합니다.
[Exposed=Window] interface SVGElement : Element { [SameObject] readonly attribute SVGAnimatedString className; readonly attribute SVGSVGElement? ownerSVGElement; readonly attribute SVGElement? viewportElement; }; SVGElement includes GlobalEventHandlers; SVGElement includes DocumentAndElementEventHandlers; SVGElement includes SVGElementInstance; SVGElement includes HTMLOrSVGElement;
className IDL 속성은 반영되어 ‘class’ 속성을 나타냅니다.
이 속성은 더 이상 사용되지 않으며, 향후 명세 버전에서는 제거될 수 있습니다. 저자들은 대신 Element.classList 사용을 권장합니다.
className 속성은 SVGElement에서 Element의 해당 속성을 오버라이드하며, WebIDL의 상속 규칙을 따릅니다.
ownerSVGElement IDL 속성은 가장 가까운 상위 ‘svg’ 요소를 나타냅니다. ownerSVGElement를 가져오면, 가장 가까운 상위 ‘svg’ 요소가 반환되며, 현재 요소가 최상위 svg 요소일 경우 null을 반환합니다.
viewportElement IDL 속성은 현재 요소에 대해 SVG 뷰포트를 제공하는 요소를 나타냅니다. viewport를 가져오면, SVG 뷰포트를 설정하는 가장 가까운 상위 요소가 반환되며, 현재 요소가 최상위 svg 요소일 경우 null을 반환합니다.
SVG 2 요구사항: | 마우스 이벤트가 도형의 채우기 또는 스트로크에 있는지 감지. |
---|---|
결정: | SVG 2에서는 요소의 스트로크 또는 채우기에서 마우스 이벤트를 더 쉽게 감지할 수 있도록 함. |
목적: | 저자가 요소를 중복하지 않고도 채우기와 스트로크에서 포인터 이벤트를 구분할 수 있도록 하기 위함 |
담당자: | Cameron (ACTION-3279) |
상태: | 완료. |
SVGGraphicsElement 인터페이스는 주 용도가 그래픽을 직접 그룹에 렌더링하는 SVG 요소를 나타냅니다.
dictionary SVGBoundingBoxOptions { boolean fill = true; boolean stroke = false; boolean markers = false; boolean clipped = false; }; interface SVGGraphicsElement : SVGElement { [SameObject] readonly attribute SVGAnimatedTransformList transform; DOMRect getBBox(optional SVGBoundingBoxOptions options); DOMMatrix? getCTM(); DOMMatrix? getScreenCTM(); }; SVGGraphicsElement includes SVGTests;
transform IDL 속성은 반영되어 transform 프로퍼티와 이에 대응하는 ‘transform’ 프레젠테이션 속성의 계산값을 나타냅니다.
getBBox 메서드는 현재 요소의 바운딩 박스를 계산하는 데 사용됩니다. getBBox(options) 메서드가 호출되면, 바운딩 박스 알고리즘이 현재 요소에 대해 실행되며, options 딕셔너리 인자의 fill, stroke, markers, clipped 멤버를 사용해 요소의 어떤 부분이 바운딩 박스에 포함될지 제어합니다. 반환되는 바운딩 박스는 요소의 사용자 좌표계를 기준으로 하며, 계산된 바운딩 박스를 정의하는 새 DOMRect 객체가 반환됩니다.
getCTM 메서드는 현재 요소의 좌표계를 해당 SVG 뷰포트의 좌표계로 변환하는 행렬을 구하는 데 사용됩니다. getCTM() 호출 시, 다음 절차를 따릅니다:
getScreenCTM 메서드는 현재 요소의 좌표계를 SVG 문서 프래그먼트의 SVG 뷰포트 좌표계로 변환하는 행렬을 구하는 데 사용됩니다. getScreenCTM() 호출 시, 다음 절차를 따릅니다:
이 행렬에는 다음이 포함됩니다:
이 메서드는 getClientCTM
이 더 적합한 이름이지만, 역사적 이유로 getScreenCTM
이름을 유지합니다.
SVGGeometryElement 인터페이스는 등가 경로로 정의되는 기하 도형에 의해 렌더링이 결정되고, 채우기와 스트로크가 가능한 SVG 요소를 나타냅니다. 여기에는 경로와 기본 도형이 포함됩니다.
[Exposed=Window] interface SVGGeometryElement : SVGGraphicsElement { [SameObject] readonly attribute SVGAnimatedNumber pathLength; boolean isPointInFill(optional DOMPointInit point); boolean isPointInStroke(optional DOMPointInit point); float getTotalLength(); DOMPoint getPointAtLength(float distance); };
isPointInFill 메서드는 호출 시, point로 전달된 점이 요소의 좌표 공간에서 해당 요소의 fill-rule 프로퍼티에 따라 결정된 경로 내부에 있으면 true를 반환하고, 그렇지 않으면 false를 반환해야 합니다. 열린 하위 경로는 실제 하위 경로에 영향을 주지 않으면서 영역 계산 시 암묵적으로 닫아야 합니다. 경로 자체 위의 점도 경로 내부로 간주해야 합니다. 반환 값은 fill-rule을 제외한 모든 시각적 CSS 프로퍼티와 무관합니다. point의 x 또는 y 값이 infinite 또는 NaN이면 false를 반환합니다.
isPointInFill은 요소가 ‘clipPath’ 요소의 자식이더라도 fill-rule 프로퍼티를 따릅니다.
isPointInFill은 SVG 컨텍스트가 허용하는 한, isPointInPath 및 CanvasDrawPath 믹스인과 동작을 맞추고 있습니다.
isPointInStroke 메서드는 호출 시, point로 전달된 점이 요소의 좌표 공간에서 해당 요소에 적용된 스트로크의 외곽 경로에 있거나 위에 있으면 true를 반환하고, 그렇지 않으면 false를 반환해야 합니다. 외곽 경로는 stroke-width, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-dasharray, stroke-dashoffset 등의 스트로크 속성을 모두 고려해야 합니다. 반환 값은 명시된 스트로크 속성을 제외한 다른 시각적 CSS 프로퍼티와 무관합니다. point의 x 또는 y 값이 infinite 또는 NaN이면 false를 반환합니다.
isPointInStroke는 SVG 컨텍스트가 허용하는 한, isPointInPath 및 CanvasDrawPath 믹스인과 동작을 맞춥니다.
pathLength IDL 속성은 반영되어 ‘pathLength’ 콘텐츠 속성을 나타냅니다.
getTotalLength 메서드는 경로의 전체 길이를 계산하는 데 사용됩니다. getTotalLength()가 호출되면, 사용자 에이전트가 계산한 경로의 총 길이(사용자 단위)를 반환합니다.
사용자 에이전트가 계산한 경로 길이는 ‘pathLength’ 속성을 고려하지 않습니다.
getPointAtLength 메서드는 경로를 따라 일정 거리의 점을 반환하는 데 사용됩니다. getPointAtLength(distance)가 호출되면, 다음 절차를 따릅니다:
getTotalLength와 마찬가지로, ‘pathLength’ 속성은 고려하지 않습니다.
SVGNumber 인터페이스는 주로 <숫자> 값을 SVGNumberList의 일부로 표현하는 데 사용됩니다. 개별 SVGNumber 객체는 스크립트로 생성할 수도 있습니다.
SVGNumber 객체는 읽기 전용으로 지정될 수 있으며, 이 경우 객체를 수정하려 하면 아래와 같이 예외가 발생합니다. animVal IDL 속성을 통해 반영되는 SVGNumber 객체는 항상 읽기 전용입니다.
SVGNumber 객체는 특정 요소와 연관될 수 있습니다. 연관된 요소는 객체가 반영 속성일 때 어느 요소의 콘텐츠 속성을 갱신할지 결정하는 데 사용됩니다. 별도 설명이 없는 한, SVGNumber 객체는 어떤 요소와도 연관되지 않습니다.
모든 SVGNumber 객체는 두 가지 모드 중 하나로 동작합니다. 객체는:
SVGNumber 객체는 내부적으로 숫자 값을 유지합니다. 이를 value라고 합니다.
[Exposed=Window] interface SVGNumber { attribute float value; };
value IDL 속성은 숫자를 나타냅니다. value를 가져오면 SVGNumber의 value가 반환됩니다.
value를 설정하면 다음 절차가 실행됩니다:
SVGLength 인터페이스는 <길이>, <퍼센트> 또는 <숫자> 값으로 표현될 수 있는 값을 나타냅니다.
SVGLength 객체는 읽기 전용으로 지정될 수 있으며, 이 경우 객체를 수정하려 하면 아래와 같이 예외가 발생합니다. animVal IDL 속성을 통해 반영되는 SVGLength 객체는 항상 읽기 전용입니다.
SVGLength 객체는 특정 요소와 연관될 수 있으며, 방향성(수평, 수직, 미지정)도 가질 수 있습니다. 연관 요소와 방향성은 퍼센트 값을 사용자 단위로 변환하거나, 객체가 반영 속성일 때 어느 요소의 콘텐츠 속성을 갱신할지 결정하는 데 사용됩니다. 별도 설명이 없는 한, SVGLength 객체는 어떤 요소와도 연관되지 않고, 방향성도 미지정입니다.
모든 SVGLength 객체는 네 가지 모드 중 하나로 동작합니다. 객체는:
SVGLength 객체는 내부적으로 <길이> 또는 <퍼센트> 또는 <숫자> 값을 유지합니다. 이를 value라고 합니다.
[Exposed=Window] interface SVGLength { // 길이 단위 타입 상수 const unsigned short SVG_LENGTHTYPE_UNKNOWN = 0; const unsigned short SVG_LENGTHTYPE_NUMBER = 1; const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2; const unsigned short SVG_LENGTHTYPE_EMS = 3; const unsigned short SVG_LENGTHTYPE_EXS = 4; const unsigned short SVG_LENGTHTYPE_PX = 5; const unsigned short SVG_LENGTHTYPE_CM = 6; const unsigned short SVG_LENGTHTYPE_MM = 7; const unsigned short SVG_LENGTHTYPE_IN = 8; const unsigned short SVG_LENGTHTYPE_PT = 9; const unsigned short SVG_LENGTHTYPE_PC = 10; readonly attribute unsigned short unitType; attribute float value; attribute float valueInSpecifiedUnits; attribute DOMString valueAsString; void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); void convertToSpecifiedUnits(unsigned short unitType); };
SVGLength에 정의된 숫자형 길이 단위 타입 상수는 SVGLength의 value 타입을 나타냅니다. 각 의미는 다음과 같습니다:
상수 | 의미 |
---|---|
SVG_LENGTHTYPE_NUMBER | 단위 없는 <숫자>. px 값으로 해석됨. |
SVG_LENGTHTYPE_PERCENTAGE | <퍼센트>. |
SVG_LENGTHTYPE_EMS | em 단위의 <길이>. |
SVG_LENGTHTYPE_EXS | ex 단위의 <길이>. |
SVG_LENGTHTYPE_PX | px 단위의 <길이>. |
SVG_LENGTHTYPE_CM | cm 단위의 <길이>. |
SVG_LENGTHTYPE_MM | mm 단위의 <길이>. |
SVG_LENGTHTYPE_IN | in 단위의 <길이>. |
SVG_LENGTHTYPE_PT | pt 단위의 <길이>. |
SVG_LENGTHTYPE_PC | pc 단위의 <길이>. |
SVG_LENGTHTYPE_UNKNOWN | 기타 타입 값. |
숫자형 길이 단위 타입 상수 사용은 안티패턴이며, SVGLength에서 지원하는 다른 단위나 길이 타입을 위한 새 상수 값은 도입되지 않습니다. 만약 다른 타입의 길이가 지원된다면, SVGLength는 SVG_LENGTHTYPE_UNKNOWN 단위 타입을 사용합니다. 기타 길이 타입에서 SVGLength의 다른 속성이 동작하는 방식은 아래 참고.
unitType IDL 속성은 SVGLength의 value 타입을 나타냅니다. unitType을 가져오면 다음 절차가 실행됩니다:
예를 들어, ch 단위의 <길이>나 calc() 등 비스칼라 값의 경우 SVG_LENGTHTYPE_UNKNOWN이 반환됩니다.
value IDL 속성은 SVGLength의 value를 사용자 단위로 나타냅니다. value를 가져오면 다음 절차가 실행됩니다:
value를 설정하면 다음 절차가 실행됩니다:
valueInSpecifiedUnits IDL 속성은 SVGLength의 value의 숫자 계수를 나타냅니다. valueInSpecifiedUnits를 가져오면 다음 절차가 실행됩니다:
따라서 valueInSpecifiedUnits는 '12%'와 12em 모두 12를 반환하지만, calc(12px + 5%) 같은 비스칼라 값에는 0을 반환합니다.
valueInSpecifiedUnits를 설정하면 다음 절차가 실행됩니다:
valueAsString IDL 속성은 SVGLength의 value를 문자열로 나타냅니다. valueAsString을 가져오면 다음 절차가 실행됩니다:
valueAsString을 설정하면 다음 절차가 실행됩니다:
newValueSpecifiedUnits 메서드는 SVGLength의 값을 타입별로 설정하는 데 사용됩니다. newValueSpecifiedUnits(unitType, valueInSpecifiedUnits) 호출 시, 다음 절차를 실행합니다:
convertToSpecifiedUnits 메서드는 SVGLength의 값을 특정 타입으로 변환하는 데 사용됩니다. convertToSpecifiedUnits(unitType) 호출 시, 다음 절차를 실행합니다:
SVGAngle 인터페이스는 <각도> 또는 <숫자> 값으로 표현될 수 있는 값을 나타냅니다.
SVGAngle 객체는 읽기 전용으로 지정될 수 있으며, 이 경우 객체를 수정하려 하면 아래와 같이 예외가 발생합니다. animVal 속성으로 반영되는 SVGAngle 객체는 항상 읽기 전용입니다.
SVGAngle 객체는 특정 요소와 연관될 수 있습니다. 연관된 요소는 객체가 반영 속성일 때 어느 요소의 콘텐츠 속성을 갱신할지 결정하는 데 사용됩니다. 별도 설명이 없는 한, SVGAngle 객체는 어떤 요소와도 연관되지 않습니다.
모든 SVGAngle 객체는 두 가지 모드 중 하나로 동작합니다. 객체는:
SVGAngle 객체는 내부적으로 <각도> 또는 <숫자> 값을 유지합니다. 이를 value라고 합니다.
[Exposed=Window] interface SVGAngle { // 각도 단위 타입 상수 const unsigned short SVG_ANGLETYPE_UNKNOWN = 0; const unsigned short SVG_ANGLETYPE_UNSPECIFIED = 1; const unsigned short SVG_ANGLETYPE_DEG = 2; const unsigned short SVG_ANGLETYPE_RAD = 3; const unsigned short SVG_ANGLETYPE_GRAD = 4; readonly attribute unsigned short unitType; attribute float value; attribute float valueInSpecifiedUnits; attribute DOMString valueAsString; void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); void convertToSpecifiedUnits(unsigned short unitType); };
SVGAngle에 정의된 숫자형 각도 단위 타입 상수는 SVGAngle의 value 타입을 나타냅니다. 각 의미는 다음과 같습니다:
상수 | 의미 |
---|---|
SVG_ANGLETYPE_UNSPECIFIED | 단위 없는 <숫자>. 도(degree) 값으로 해석됨. |
SVG_ANGLETYPE_DEG | deg 단위를 가진 <각도>. |
SVG_ANGLETYPE_RAD | rad 단위를 가진 <각도>. |
SVG_ANGLETYPE_GRAD | grad 단위를 가진 <각도>. |
SVG_ANGLETYPE_UNKNOWN | 기타 타입 값. |
숫자형 각도 단위 타입 상수 사용은 안티패턴이며, SVGAngle에서 지원하는 다른 단위나 각도 타입을 위한 새 상수 값은 도입되지 않습니다. 만약 다른 타입의 각도가 지원된다면, SVGAngle는 SVG_ANGLETYPE_UNKNOWN 단위 타입을 사용합니다. 기타 각도 타입에서 SVGAngle의 다른 속성이 동작하는 방식은 아래 참고.
unitType IDL 속성은 SVGAngle의 value 타입을 나타냅니다. unitType을 가져오면 다음 절차가 실행됩니다:
예를 들어, turn 단위의 <각도>인 경우 SVG_ANGLETYPE_UNKNOWN이 반환됩니다.
value IDL 속성은 SVGAngle의 value를 도(degree) 단위로 나타냅니다. value를 가져오면 다음 절차가 실행됩니다:
value를 설정하면 다음 절차가 실행됩니다:
valueInSpecifiedUnits IDL 속성은 SVGAngle의 value의 숫자 계수를 나타냅니다. valueInSpecifiedUnits를 가져오면 다음 절차가 실행됩니다:
valueInSpecifiedUnits를 설정하면 다음 절차가 실행됩니다:
valueAsString IDL 속성은 SVGAngle의 value를 문자열로 나타냅니다. valueAsString을 가져오면 다음 절차가 실행됩니다:
valueAsString을 설정하면 다음 절차가 실행됩니다:
newValueSpecifiedUnits 메서드는 SVGAngle의 값을 타입별로 설정하는 데 사용됩니다. newValueSpecifiedUnits(unitType, valueInSpecifiedUnits) 호출 시, 다음 절차를 실행합니다:
convertToSpecifiedUnits 메서드는 SVGAngle의 값을 특정 타입으로 변환하는 데 사용됩니다. convertToSpecifiedUnits(unitType) 호출 시, 다음 절차를 실행합니다:
SVG 2 요구사항: | SVGList* 인터페이스를 다른 리스트/배열과 좀 더 유사하게 만듦. |
---|---|
결정: | svg 리스트 타입에 배열 스타일 인덱싱 및 .length, .item 추가. |
목적: | 다른 배열 타입(NodeList 등)과 일치시키기 위함. 이미 Opera와 Firefox에 구현됨. |
담당자: | Erik (ACTION-2975) |
상태: | 완료 |
일부 SVG 속성은 값의 리스트를 포함하며, 이러한 값을 표현하기 위해 여러 SVG DOM 리스트 인터페이스가 있습니다. 각 필요한 요소 타입별로 하나씩 있으며 – SVGNumberList, SVGLengthList, SVGPointList, SVGTransformList, SVGStringList가 있습니다. 처음 네 가지는 SVGAnimatedNumberList, SVGAnimatedLengthList, SVGAnimatedPoints 및 SVGTransformList 객체의 base/애니메이션 성분을 표현하는 데 사용되고, 다섯 번째 SVGStringList는 문자열 리스트를 받는 몇몇 애니메이션되지 않는 속성을 반영하는 데 사용됩니다.
대부분의 리스트 인터페이스는 아래와 같은 형식을 취합니다:
interface SVGNameList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); Type initialize(Type newItem); getter Type getItem(unsigned long index); Type insertItemBefore(Type newItem, unsigned long index); Type replaceItem(Type newItem, unsigned long index); Type removeItem(unsigned long index); Type appendItem(Type newItem); setter void (unsigned long index, Type newItem); };
여기서 Name은 리스트 요소의 설명적 이름("Number", "Length", "Point", "Transform", "String")이고 Type은 리스트 요소의 IDL 타입(SVGNumber, SVGLength, DOMPoint, SVGTransform, DOMString)입니다.
SVGTransformList 인터페이스는 위 형식을 따르지만 두 개의 추가 메서드가 있습니다.
모든 리스트 인터페이스 객체(SVGTransformList 제외)는 반영된 콘텐츠 속성의 base value를 반영합니다. SVGTransformList 객체는 프레젠테이션 속성(‘transform’, ‘gradientTransform’, ‘patternTransform’)을 반영합니다. 모든 리스트 인터페이스 객체는 특정 요소와 연관되어 있습니다. SVGLength 등과 달리 "분리된" 리스트 인터페이스 객체는 없습니다.
리스트 인터페이스 객체는 내부적으로 요소 리스트를 유지하며, 아래에서는 단순히 "리스트"라 칭합니다. IDL 속성과 메서드를 통해 리스트의 요소를 조회 및 조작할 수 있습니다. 리스트는 반영된 콘텐츠 속성의 변경이나 애니메이션(혹은 SVGTransformList 객체의 경우 transform 프로퍼티의 계산값 변경)에 따라 역시 변경될 수 있습니다.
리스트 인터페이스 객체는 읽기 전용으로 지정될 수 있으며, 이 경우 객체를 수정하려 하면 아래와 같이 예외가 발생합니다. animVal IDL 속성으로 반영되는 리스트 인터페이스 객체는 항상 읽기 전용입니다.
리스트 인터페이스 객체는 다음 절차로 동기화됩니다:
리스트 요소 객체를 detach할 때는, 리스트 요소 타입에 따라 아래 절차를 실행합니다:
리스트 요소 객체를 attach할 때는, 리스트 요소 타입에 따라 아래 절차를 실행합니다:
지원되는 프로퍼티 인덱스는 리스트 인터페이스 객체의 리스트 길이보다 작은 모든 0 이상의 정수 집합입니다.
length와 numberOfItems IDL 속성은 리스트의 길이를 나타내며, 값을 가져오면 리스트의 길이를 반환합니다.
clear 메서드는 리스트의 모든 항목을 제거하는 데 사용됩니다. clear() 호출 시 다음 절차를 실행합니다:
initialize 메서드는 리스트를 초기화하고 지정한 값 하나만 추가하는 데 사용됩니다. initialize(newItem) 호출 시 다음 절차를 실행합니다:
getItem 메서드는 리스트에서 특정 위치의 항목을 얻는 데 사용됩니다. getItem(index) 호출 시 다음 절차를 실행합니다:
리스트 요소 타입이 객체 타입(SVGLength 등)인 경우, 해당 객체의 참조를 반환하며 복사본이 아님.
insertItemBefore 메서드는 리스트의 특정 위치에 요소를 삽입하는 데 사용됩니다. insertItemBefore(newItem, index) 호출 시 다음 절차를 실행합니다:
replaceItem 메서드는 리스트의 기존 항목을 새 항목으로 교체합니다. replaceItem(newItem, index) 호출 시 다음 절차를 실행합니다:
removeItem 메서드는 리스트에서 항목 하나를 제거합니다. removeItem(index) 호출 시 다음 절차를 실행합니다:
appendItem 메서드는 리스트 끝에 항목을 추가합니다. appendItem(newItem) 호출 시 다음 절차를 실행합니다:
인덱스 프로퍼티 setter의 동작은 replaceItem 메서드와 동일합니다.
SVGNumberList 인터페이스는 요소가 리스트 인터페이스이며, 각 요소는 SVGNumber 객체입니다. SVGNumberList 객체는 숫자 리스트를 나타냅니다.
[Exposed=Window] interface SVGNumberList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); SVGNumber initialize(SVGNumber newItem); getter SVGNumber getItem(unsigned long index); SVGNumber insertItemBefore(SVGNumber newItem, unsigned long index); SVGNumber replaceItem(SVGNumber newItem, unsigned long index); SVGNumber removeItem(unsigned long index); SVGNumber appendItem(SVGNumber newItem); setter void (unsigned long index, SVGNumber newItem); };
SVGNumberList의 모든 인터페이스 멤버의 동작은 위 리스트 인터페이스 절에서 정의되어 있습니다.
SVGLengthList 인터페이스는 요소가 리스트 인터페이스이며, 각 요소는 SVGLength 객체입니다. SVGLengthList 객체는 길이 리스트를 나타냅니다.
[Exposed=Window] interface SVGLengthList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); SVGLength initialize(SVGLength newItem); getter SVGLength getItem(unsigned long index); SVGLength insertItemBefore(SVGLength newItem, unsigned long index); SVGLength replaceItem(SVGLength newItem, unsigned long index); SVGLength removeItem(unsigned long index); SVGLength appendItem(SVGLength newItem); setter void (unsigned long index, SVGLength newItem); };
SVGLengthList의 모든 인터페이스 멤버의 동작은 위 리스트 인터페이스 절에서 정의되어 있습니다.
SVGStringList 인터페이스는 요소가 리스트 인터페이스이며, 각 요소는 DOMString 값입니다. SVGStringList 객체는 문자열 리스트를 나타냅니다.
[Exposed=Window] interface SVGStringList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); DOMString initialize(DOMString newItem); getter DOMString getItem(unsigned long index); DOMString insertItemBefore(DOMString newItem, unsigned long index); DOMString replaceItem(DOMString newItem, unsigned long index); DOMString removeItem(unsigned long index); DOMString appendItem(DOMString newItem); setter void (unsigned long index, DOMString newItem); };
SVGStringList의 모든 인터페이스 멤버의 동작은 위 리스트 인터페이스 절에서 정의되어 있습니다.
다음 인터페이스들은 애니메이션 가능한 콘텐츠 속성의 반영값을 표현하는 데 사용됩니다.
각 인터페이스는 동일한 데이터를 나타내는 두 개의 구성 객체를 포함합니다:
baseVal
및 animVal
.
baseVal
(기본값) 객체는 수정 가능하여, 해당 속성 값을 갱신할 수 있습니다.
SVG 1.1에서는 SVG DOM 인터페이스의 animVal
속성이 반영된 속성의 현재 애니메이션 값을 나타냈습니다. 이 버전의 SVG에서는
animVal
이 더 이상 현재 애니메이션 값을 나타내지 않고, 대신 baseVal
의 별칭이 됩니다.
SVGAnimatedBoolean 객체는 불리언 값이 들어가는 애니메이션 가능한 속성을 반영하는 데 사용됩니다.
[Exposed=Window] interface SVGAnimatedBoolean { attribute boolean baseVal; readonly attribute boolean animVal; };
baseVal과 animVal IDL 속성은 모두 반영된 속성의 현재(애니메이션되지 않은) 값을 나타냅니다. baseVal 또는 animVal을 가져오면 다음 절차가 실행됩니다:
baseVal을 설정하면, 값이 true면 반영된 속성을 "true"로, 아니면 "false"로 설정합니다.
SVGAnimatedEnumeration 객체는 키워드 값을 받는 애니메이션 가능한 속성을 반영하는 데 사용됩니다 (예: ‘method’ 속성, ‘textPath’ 등). 또한 애니메이션 가능한 속성 값의 타입을 반영하는 데 사용됩니다(예: orientType IDL 속성, ‘marker’ 요소의 ‘orient’ 속성).
[Exposed=Window] interface SVGAnimatedEnumeration { attribute unsigned short baseVal; readonly attribute unsigned short animVal; };
키워드 값만 받는 애니메이션 가능한 속성을 반영하는 SVGAnimatedEnumeration 객체에서, baseVal과 animVal IDL 속성은 반영된 속성의 현재(애니메이션되지 않은) 값을 나타냅니다. orientType의 경우, 반영된 ‘orient’ 속성의 현재(애니메이션되지 않은) 값의 타입을 나타냅니다. baseVal 또는 animVal을 가져오면 다음 절차가 실행됩니다:
baseVal을 설정하면, 다음 절차를 실행합니다:
SVGAnimatedInteger 객체는 정수 값을 받는 애니메이션 가능한 속성을 반영하는 데 사용됩니다 (예: ‘numOctaves’, ‘feTurbulence’). 또한 정수 + 선택적 두 번째 정수를 받는 애니메이션 가능한 속성의 일부를 반영하는 데도 사용됩니다 (예: ‘order’, ‘feConvolveMatrix’).
SVGAnimatedInteger 인터페이스는 본 명세에서는 사용되지 않으나, Filter Effects 명세에서 여러 곳에 사용됨.
[Exposed=Window] interface SVGAnimatedInteger { attribute long baseVal; readonly attribute long animVal; };
단일 정수 값을 받는 애니메이션 가능한 속성을 반영하는 SVGAnimatedInteger 객체에서, baseVal과 animVal IDL 속성은 반영된 속성의 현재(애니메이션되지 않은) 값을 나타냅니다. 정수 + 선택적 두 번째 정수를 받는 속성의 일부를 반영하는 경우, 두 정수 중 하나의 현재 값을 나타냅니다. baseVal 또는 animVal을 가져오면 다음 절차를 실행합니다:
예: ‘order’ 정의에 따르면, 두 번째 값이 없으면 첫 번째 값과 동일하게 간주.
baseVal을 설정하면, 다음 절차를 실행합니다:
SVGAnimatedNumber 객체는 숫자 값을 받는 애니메이션 가능한 속성을 반영하는 데 사용됩니다 (예: ‘pathLength’, ‘path’). 또한 숫자 + 선택적 두 번째 숫자를 받는 애니메이션 가능한 속성의 일부를 반영하는 데도 사용됩니다 (예: ‘kernelUnitLength’, ‘feDiffuseLighting’).
[Exposed=Window] interface SVGAnimatedNumber { attribute float baseVal; readonly attribute float animVal; };
단일 숫자 값을 받는 애니메이션 가능한 속성을 반영하는 SVGAnimatedNumber 객체에서, baseVal과 animVal IDL 속성은 반영된 속성의 현재(애니메이션되지 않은) 값을 나타냅니다. 숫자 + 선택적 두 번째 숫자를 받는 속성의 일부를 반영하는 경우, 두 숫자 중 하나의 현재 값을 나타냅니다. baseVal 또는 animVal을 가져오면 다음 절차를 실행합니다:
예: ‘kernelUnitLength’ 정의에 따르면, 두 번째 값이 없으면 첫 번째 값과 동일하게 간주.
baseVal을 설정하면, 다음 절차를 실행합니다:
SVGAnimatedLength 객체는 (a) <길이>, <퍼센트> 또는 <숫자> 값을 받는 애니메이션 가능한 속성, 또는 (b) 이러한 값을 받는 CSS 프로퍼티 및 그에 대응되는 프레젠테이션 속성을 반영하는 데 사용됩니다.
[Exposed=Window] interface SVGAnimatedLength { [SameObject] readonly attribute SVGLength baseVal; [SameObject] readonly attribute SVGLength animVal; };
baseVal과 animVal IDL 속성은 반영된 콘텐츠 속성의 현재 값을 나타냅니다. baseVal 또는 animVal을 가져오면 반환되는 SVGLength 객체는:
SVGAnimatedAngle 객체는 반영되어 ‘orient’ 속성의 애니메이션 <각도> 값을 ‘marker’ 요소에서 orientAngle IDL 속성을 통해 나타냅니다.
[Exposed=Window] interface SVGAnimatedAngle { [SameObject] readonly attribute SVGAngle baseVal; [SameObject] readonly attribute SVGAngle animVal; };
baseVal과 animVal IDL 속성은 반영된 ‘orient’ 속성의 현재(애니메이션되지 않은) <각도> 값을 나타냅니다. baseVal 또는 animVal을 가져오면 반환되는 SVGAngle 객체는:
SVGAnimatedString 객체는 문자열 값을 받는 애니메이션 가능한 속성을 반영하는 데 사용됩니다. 필요에 따라 두 번째, 폐기된(deprecated) 속성을 추가로 반영하도록 정의될 수도 있습니다.
[Exposed=Window] interface SVGAnimatedString { attribute DOMString baseVal; readonly attribute DOMString animVal; };
baseVal과 animVal IDL 속성은 반영된 속성의 현재(애니메이션되지 않은) 값을 나타냅니다. baseVal 또는 animVal을 가져오면 다음 절차를 실행합니다:
href 멤버가 SVGURIReference 인터페이스에 있을 때, ‘xlink:href’ 속성이 존재하고 ‘href’ 속성이 없으면 xlink:href 값이 반환되고, 그 외에는 href 속성 값이 반환됩니다.
baseVal을 설정하면, 다음 절차를 실행합니다:
href 멤버가 SVGURIReference 인터페이스에 있을 때, ‘xlink:href’ 속성이 존재하고 ‘href’ 속성이 없으면 xlink:href 속성에 값이 설정되고, 그 외에는 href 속성에 값이 설정됩니다.
SVGAnimatedRect 객체는 반영되어 x, y, width, height로 지정된 사각형 값을 받는 애니메이션 가능한 속성을 나타냅니다.
본 명세에서 SVGAnimatedRect로 반영되는 유일한 속성은 ‘viewBox’입니다.
[Exposed=Window] interface SVGAnimatedRect { [SameObject] readonly attribute DOMRect baseVal; [SameObject] readonly attribute DOMRectReadOnly animVal; };
baseVal과 animVal IDL 속성은 반영된 속성의 현재(애니메이션되지 않은) 사각형 값을 나타냅니다. baseVal 또는 animVal을 가져오면 DOMRect 객체가 반환됩니다.
baseVal 또는 animVal DOMRect 객체 생성 시, 이후 반영된 콘텐츠 속성이 추가/삭제/변경될 때마다 다음 절차를 실행합니다:
baseVal, animVal DOMRect 객체의 x 좌표, y 좌표, width, height 프로퍼티가 변경될 때마다(콘텐츠 속성 값을 DOMRect에 반영하는 이전 알고리즘의 일부가 아닌 경우), 반영된 콘텐츠 속성을 재직렬화해야 합니다.
SVGAnimatedNumberList 객체는 반영되어 <숫자> 값 리스트를 받는 애니메이션 가능한 속성을 나타냅니다.
[Exposed=Window] interface SVGAnimatedNumberList { [SameObject] readonly attribute SVGNumberList baseVal; [SameObject] readonly attribute SVGNumberList animVal; };
baseVal과 animVal IDL 속성은 반영된 속성의 현재(애니메이션되지 않은) 값을 나타냅니다. baseVal 또는 animVal을 가져오면, 반영된 속성의 base value를 반영하는 SVGNumberList 객체가 반환됩니다.
SVGAnimatedLengthList 객체는 반영되어 <길이>, <퍼센트> 또는 <숫자> 값 리스트를 받는 애니메이션 가능한 속성을 나타냅니다.
[Exposed=Window] interface SVGAnimatedLengthList { [SameObject] readonly attribute SVGLengthList baseVal; [SameObject] readonly attribute SVGLengthList animVal; };
baseVal 또는 animVal IDL 속성은 반영된 속성의 현재(애니메이션되지 않은) 값을 나타냅니다. baseVal 또는 animVal을 가져오면, 반영된 속성의 base value를 반영하는 SVGLengthList 객체가 반환됩니다.
SVGUnitTypes 인터페이스는 ‘gradientUnits’, ‘patternContentUnits’ 등과 유사한 속성을 반영할 때 자주 사용하는 상수 집합을 정의합니다.
[Exposed=Window] interface SVGUnitTypes { // 단위 타입 const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0; const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1; const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2; };
SVGUnitTypes에 정의된 단위 타입 상수의 의미는 다음과 같습니다:
상수 | 의미 |
---|---|
SVG_UNIT_TYPE_USERSPACEONUSE | 'userSpaceOnUse' 속성값에 해당. |
SVG_UNIT_TYPE_OBJECTBOUNDINGBOX | 'objectBoundingBox' 속성값에 해당. |
SVG_UNIT_TYPE_UNKNOWN | 그 외 타입 값. |
SVGTests 인터페이스는 조건 처리 속성을 반영하는 데 사용되며, 이를 지원하는 요소의 다른 인터페이스에 믹스인됩니다.
interface mixin SVGTests { [SameObject] readonly attribute SVGStringList requiredExtensions; [SameObject] readonly attribute SVGStringList systemLanguage; };
requiredExtensions IDL 속성은 반영되어 ‘requiredExtensions’ 콘텐츠 속성과 연결됩니다.
systemLanguage IDL 속성은 반영되어 ‘systemLanguage’ 콘텐츠 속성과 연결됩니다.
SVGFitToViewBox 인터페이스는 ‘viewBox’와 ‘preserveAspectRatio’ 속성을 반영하는 데 사용되며, 이 두 속성을 지원하는 요소의 다른 인터페이스에 믹스인됩니다.
interface mixin SVGFitToViewBox { [SameObject] readonly attribute SVGAnimatedRect viewBox; [SameObject] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; };
viewBox IDL 속성은 반영되어 ‘viewBox’ 콘텐츠 속성과 연결됩니다.
preserveAspectRatio IDL 속성은 반영되어 ‘preserveAspectRatio’ 콘텐츠 속성과 연결됩니다.
SVGZoomAndPan 인터페이스는 ‘zoomAndPan’ 속성을 반영하는 데 사용되며, 이 속성을 지원하는 요소의 다른 인터페이스에 믹스인됩니다.
interface mixin SVGZoomAndPan { // 줌 및 팬 타입 const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0; const unsigned short SVG_ZOOMANDPAN_DISABLE = 1; const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2; attribute unsigned short zoomAndPan; };
SVGZoomAndPan에 정의된 줌 및 팬 타입 상수의 의미는 다음과 같습니다:
상수 | 의미 |
---|---|
SVG_ZOOMANDPAN_DISABLE | 'disable' 속성값에 해당. |
SVG_ZOOMANDPAN_MAGNIFY | 'magnify' 속성값에 해당. |
SVG_ZOOMANDPAN_UNKNOWN | 그 외 타입 값. |
zoomAndPan IDL 속성은 ‘zoomAndPan’ 속성 값을 나타냅니다. zoomAndPan을 가져오면 다음 절차를 실행합니다:
zoomAndPan을 설정하면, 다음 절차를 실행합니다:
SVGURIReference 인터페이스는 ‘href’ 속성과 폐기된 ‘xlink:href’ 속성을 반영하는 데 사용됩니다.
interface mixin SVGURIReference { [SameObject] readonly attribute SVGAnimatedString href; };
href IDL 속성은 ‘href’ 속성 값을 나타내며, 해당 요소가 지원하도록 정의된 경우 폐기된 ‘xlink:href’ 속성 값도 함께 나타냅니다. href를 가져오면 반환되는 SVGAnimatedString 객체는:
SVGAnimatedString 인터페이스는 baseVal, animVal 멤버를 통해 폐기된 ‘xlink:href’ 속성을 반영하고, 해당 속성이 존재하고 ‘href’ 속성이 없을 때만 그렇습니다. 그 외에는 항상 ‘href’ 속성을 반영합니다. 애니메이션 요소는 attributeName='xlink:href'을 ‘href’ 속성에 대한 별칭(alias)으로 처리합니다.