Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Documents / FixedSOMTable.cs / 1 / FixedSOMTable.cs
/*++
File: FixedSOMTable.cs
Copyright (C) 2005 Microsoft Corporation. All rights reserved.
Description:
This class reprsents a table on the page
History:
05/17/2005: eleese - Created
--*/
namespace System.Windows.Documents
{
using System.Windows.Shapes;
using System.Windows.Media;
using System.Diagnostics;
using System.Windows;
using System.Globalization;
internal sealed class FixedSOMTable : FixedSOMPageElement
{
//--------------------------------------------------------------------
//
// Constructors
//
//---------------------------------------------------------------------
#region Constructors
public FixedSOMTable(FixedSOMPage page) : base(page)
{
_numCols = 0;
}
#endregion Constructors
//-------------------------------------------------------------------
//
// Public Methods
//
//---------------------------------------------------------------------
#region Public Methods
#if DEBUG
public override void Render(DrawingContext dc, string label, DrawDebugVisual debugVisual)
{
Pen pen = new Pen(Brushes.Green, 5);
Rect rect = _boundingRect;
dc.DrawRectangle(null, pen , rect);
CultureInfo EnglishCulture = CultureInfo.GetCultureInfoByIetfLanguageTag("en-US");
FormattedText ft = new FormattedText(label,
EnglishCulture,
FlowDirection.LeftToRight,
new Typeface("Courier New"),
20,
Brushes.Blue);
Point labelLocation = new Point(rect.Left-25, (rect.Bottom + rect.Top)/2 - 10);
// dc.DrawText(ft, labelLocation);
for (int i = 0; i < _semanticBoxes.Count; i++)
{
_semanticBoxes[i].Render(dc, label + " " + i.ToString(),debugVisual);
}
}
#endif
public void AddRow(FixedSOMTableRow row)
{
base.Add(row);
int colCount = row.SemanticBoxes.Count;
if (colCount > _numCols)
{
_numCols = colCount;
}
}
public bool AddContainer(FixedSOMContainer container)
{
Rect bounds = container.BoundingRect;
//Allow couple pixels margin
double verticalOverlap = bounds.Height * 0.2;
double horizontalOverlap = bounds.Width * 0.2;
bounds.Inflate(-horizontalOverlap,-verticalOverlap);
if (this.BoundingRect.Contains(bounds))
{
foreach (FixedSOMTableRow row in this.SemanticBoxes)
{
if (row.BoundingRect.Contains(bounds))
{
foreach (FixedSOMTableCell cell in row.SemanticBoxes)
{
if (cell.BoundingRect.Contains(bounds))
{
cell.AddContainer(container);
FixedSOMFixedBlock block = container as FixedSOMFixedBlock;
if (block != null)
{
if (block.IsRTL)
{
_RTLCount++;
}
else
{
_LTRCount++;
}
}
return true;
}
}
}
}
}
return false;
}
public override void SetRTFProperties(FixedElement element)
{
if (element.Type == typeof(Table))
{
element.SetValue(Table.CellSpacingProperty, 0.0);
}
}
#endregion Public Methods
#region Public Properties
public override bool IsRTL
{
get
{
return _RTLCount > _LTRCount;
}
}
#endregion Public Properties
#region Internal Properties
internal override FixedElement.ElementType[] ElementTypes
{
get
{
return new FixedElement.ElementType[2] { FixedElement.ElementType.Table, FixedElement.ElementType.TableRowGroup };
}
}
internal bool IsEmpty
{
get
{
foreach (FixedSOMTableRow row in this.SemanticBoxes)
{
if (!row.IsEmpty)
{
return false;
}
}
return true;
}
}
internal bool IsSingleCelled
{
get
{
if (this.SemanticBoxes.Count == 1)
{
FixedSOMTableRow row = this.SemanticBoxes[0] as FixedSOMTableRow;
Debug.Assert(row != null);
return (row.SemanticBoxes.Count == 1);
}
return false;
}
}
#endregion Internal Properties
#region Internal methods
internal void DeleteEmptyRows()
{
for (int i=0; i nextCol)
{
deleteCol = false;
}
}
}
if (deleteCol)
{
for (r = 0; r < nRows; r++)
{
FixedSOMTableRow row = (FixedSOMTableRow)(this.SemanticBoxes[r]);
row.SemanticBoxes.RemoveAt(indexInRow[r]);
}
if (nextCol == double.MaxValue)
{
break;
}
else
{
continue;
}
}
// are we done?
if (nextCol == double.MaxValue)
{
break;
}
// increment ColumnSpans, indexInRow
for (r = 0; r < nRows; r++)
{
FixedSOMTableRow row = (FixedSOMTableRow)(this.SemanticBoxes[r]);
int idx = indexInRow[r];
if (idx + 1 < row.SemanticBoxes.Count && row.SemanticBoxes[idx + 1].BoundingRect.Left == nextCol)
{
indexInRow[r] = idx + 1;
}
else
{
((FixedSOMTableCell)row.SemanticBoxes[idx]).ColumnSpan++;
}
}
}
}
#endregion Internal methods
//--------------------------------------------------------------------
//
// Private Fields
//
//---------------------------------------------------------------------
#region Private Fields
const double _minColumnWidth = 5; // empty columns narrower than this will be deleted
const double _minRowHeight = 10; //empty rows smaller than this will be deleted
private int _RTLCount;
private int _LTRCount;
int _numCols;
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/*++
File: FixedSOMTable.cs
Copyright (C) 2005 Microsoft Corporation. All rights reserved.
Description:
This class reprsents a table on the page
History:
05/17/2005: eleese - Created
--*/
namespace System.Windows.Documents
{
using System.Windows.Shapes;
using System.Windows.Media;
using System.Diagnostics;
using System.Windows;
using System.Globalization;
internal sealed class FixedSOMTable : FixedSOMPageElement
{
//--------------------------------------------------------------------
//
// Constructors
//
//---------------------------------------------------------------------
#region Constructors
public FixedSOMTable(FixedSOMPage page) : base(page)
{
_numCols = 0;
}
#endregion Constructors
//-------------------------------------------------------------------
//
// Public Methods
//
//---------------------------------------------------------------------
#region Public Methods
#if DEBUG
public override void Render(DrawingContext dc, string label, DrawDebugVisual debugVisual)
{
Pen pen = new Pen(Brushes.Green, 5);
Rect rect = _boundingRect;
dc.DrawRectangle(null, pen , rect);
CultureInfo EnglishCulture = CultureInfo.GetCultureInfoByIetfLanguageTag("en-US");
FormattedText ft = new FormattedText(label,
EnglishCulture,
FlowDirection.LeftToRight,
new Typeface("Courier New"),
20,
Brushes.Blue);
Point labelLocation = new Point(rect.Left-25, (rect.Bottom + rect.Top)/2 - 10);
// dc.DrawText(ft, labelLocation);
for (int i = 0; i < _semanticBoxes.Count; i++)
{
_semanticBoxes[i].Render(dc, label + " " + i.ToString(),debugVisual);
}
}
#endif
public void AddRow(FixedSOMTableRow row)
{
base.Add(row);
int colCount = row.SemanticBoxes.Count;
if (colCount > _numCols)
{
_numCols = colCount;
}
}
public bool AddContainer(FixedSOMContainer container)
{
Rect bounds = container.BoundingRect;
//Allow couple pixels margin
double verticalOverlap = bounds.Height * 0.2;
double horizontalOverlap = bounds.Width * 0.2;
bounds.Inflate(-horizontalOverlap,-verticalOverlap);
if (this.BoundingRect.Contains(bounds))
{
foreach (FixedSOMTableRow row in this.SemanticBoxes)
{
if (row.BoundingRect.Contains(bounds))
{
foreach (FixedSOMTableCell cell in row.SemanticBoxes)
{
if (cell.BoundingRect.Contains(bounds))
{
cell.AddContainer(container);
FixedSOMFixedBlock block = container as FixedSOMFixedBlock;
if (block != null)
{
if (block.IsRTL)
{
_RTLCount++;
}
else
{
_LTRCount++;
}
}
return true;
}
}
}
}
}
return false;
}
public override void SetRTFProperties(FixedElement element)
{
if (element.Type == typeof(Table))
{
element.SetValue(Table.CellSpacingProperty, 0.0);
}
}
#endregion Public Methods
#region Public Properties
public override bool IsRTL
{
get
{
return _RTLCount > _LTRCount;
}
}
#endregion Public Properties
#region Internal Properties
internal override FixedElement.ElementType[] ElementTypes
{
get
{
return new FixedElement.ElementType[2] { FixedElement.ElementType.Table, FixedElement.ElementType.TableRowGroup };
}
}
internal bool IsEmpty
{
get
{
foreach (FixedSOMTableRow row in this.SemanticBoxes)
{
if (!row.IsEmpty)
{
return false;
}
}
return true;
}
}
internal bool IsSingleCelled
{
get
{
if (this.SemanticBoxes.Count == 1)
{
FixedSOMTableRow row = this.SemanticBoxes[0] as FixedSOMTableRow;
Debug.Assert(row != null);
return (row.SemanticBoxes.Count == 1);
}
return false;
}
}
#endregion Internal Properties
#region Internal methods
internal void DeleteEmptyRows()
{
for (int i=0; i nextCol)
{
deleteCol = false;
}
}
}
if (deleteCol)
{
for (r = 0; r < nRows; r++)
{
FixedSOMTableRow row = (FixedSOMTableRow)(this.SemanticBoxes[r]);
row.SemanticBoxes.RemoveAt(indexInRow[r]);
}
if (nextCol == double.MaxValue)
{
break;
}
else
{
continue;
}
}
// are we done?
if (nextCol == double.MaxValue)
{
break;
}
// increment ColumnSpans, indexInRow
for (r = 0; r < nRows; r++)
{
FixedSOMTableRow row = (FixedSOMTableRow)(this.SemanticBoxes[r]);
int idx = indexInRow[r];
if (idx + 1 < row.SemanticBoxes.Count && row.SemanticBoxes[idx + 1].BoundingRect.Left == nextCol)
{
indexInRow[r] = idx + 1;
}
else
{
((FixedSOMTableCell)row.SemanticBoxes[idx]).ColumnSpan++;
}
}
}
}
#endregion Internal methods
//--------------------------------------------------------------------
//
// Private Fields
//
//---------------------------------------------------------------------
#region Private Fields
const double _minColumnWidth = 5; // empty columns narrower than this will be deleted
const double _minRowHeight = 10; //empty rows smaller than this will be deleted
private int _RTLCount;
private int _LTRCount;
int _numCols;
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- X509Extension.cs
- HttpPostProtocolImporter.cs
- DecimalConverter.cs
- BuildProviderAppliesToAttribute.cs
- Stroke2.cs
- RuleSetBrowserDialog.cs
- AutoResetEvent.cs
- FloaterBaseParaClient.cs
- ScrollBarRenderer.cs
- CodeDirectoryCompiler.cs
- ViewManager.cs
- RelatedPropertyManager.cs
- ClientSideQueueItem.cs
- XamlToRtfParser.cs
- XmlSchemaSimpleTypeList.cs
- UserControlCodeDomTreeGenerator.cs
- CrossAppDomainChannel.cs
- MediaContext.cs
- BitmapEffectDrawingContextWalker.cs
- ExpressionBuilderContext.cs
- VBCodeProvider.cs
- ElementNotEnabledException.cs
- MemberRelationshipService.cs
- Point3DAnimationUsingKeyFrames.cs
- PageBuildProvider.cs
- StaticSiteMapProvider.cs
- TemplateBindingExtensionConverter.cs
- LabelInfo.cs
- XmlWriterTraceListener.cs
- DNS.cs
- input.cs
- PasswordRecoveryAutoFormat.cs
- WebPartZoneBase.cs
- MutexSecurity.cs
- GraphicsContext.cs
- NotConverter.cs
- WebPartTracker.cs
- PointAnimationClockResource.cs
- KnownAssemblyEntry.cs
- StringExpressionSet.cs
- TraceListeners.cs
- GridLength.cs
- DbQueryCommandTree.cs
- WebPartMinimizeVerb.cs
- EncryptedType.cs
- XmlEntity.cs
- HostSecurityManager.cs
- BindingOperations.cs
- RegexCaptureCollection.cs
- Debugger.cs
- Propagator.JoinPropagator.cs
- DateTimePicker.cs
- SessionIDManager.cs
- JsonWriter.cs
- DrawingVisual.cs
- CodeExporter.cs
- BypassElement.cs
- _NativeSSPI.cs
- NativeRecognizer.cs
- StyleModeStack.cs
- PKCS1MaskGenerationMethod.cs
- ConfigsHelper.cs
- DrawingImage.cs
- PropertyExpression.cs
- rsa.cs
- ColorPalette.cs
- basevalidator.cs
- Interlocked.cs
- ConfigPathUtility.cs
- DataContract.cs
- RegistrySecurity.cs
- IERequestCache.cs
- Simplifier.cs
- TdsParser.cs
- OleDbWrapper.cs
- coordinatorfactory.cs
- GridViewColumnCollectionChangedEventArgs.cs
- SqlRowUpdatingEvent.cs
- EntityCommandDefinition.cs
- SmiTypedGetterSetter.cs
- RootBrowserWindowProxy.cs
- HttpRequest.cs
- CachedCompositeFamily.cs
- ASCIIEncoding.cs
- TypeConverterHelper.cs
- DrawingContextWalker.cs
- HelpEvent.cs
- WeakReference.cs
- SoapReflectionImporter.cs
- TCEAdapterGenerator.cs
- SrgsToken.cs
- PropertyGeneratedEventArgs.cs
- InfoCardMasterKey.cs
- LongMinMaxAggregationOperator.cs
- ResolveCriteriaApril2005.cs
- BindingSourceDesigner.cs
- HttpTransportSecurityElement.cs
- SafeEventHandle.cs
- SqlCacheDependencyDatabase.cs
- SafeMemoryMappedFileHandle.cs